Primeiros passos com o Cloud Endpoints no ambiente flexível do App Engine com ESP

Este tutorial mostra como configurar e implantar uma API de amostra e o Extensible Service Proxy (ESP) em execução em uma instância do ambiente flexível do App Engine. A API de exemplo é descrita com a especificação OpenAPI. Você também verá como criar uma chave de API e usá-la em solicitações para a API.

Para uma visão geral do Cloud Endpoints, consulte Sobre o Endpoints e Arquitetura do Endpoints.

Objetivos

Ao seguir o tutorial, use a lista detalhada de tarefas abaixo. Em todas elas, é necessário que as solicitações para a API sejam enviadas com sucesso.

  1. Configure um projeto do Google Cloud , instale o software necessário e crie um aplicativo do App Engine. Consulte Antes de começar.
  2. Faça o download do exemplo de código. Consulte Como conseguir o exemplo de código.
  3. Configurar o arquivo openapi-appengine.yaml, usado para configurar o Endpoints. Consulte Como configurar o Endpoints.
  4. Implante a configuração do Endpoints para criar um serviço. Consulte Como implantar a configuração do Endpoints.
  5. Implante a API e o ESP no App Engine: Consulte Como implantar o back-end da API.
  6. Envie uma solicitação à API. Consulte Como enviar uma solicitação à API.
  7. Rastreie a atividade da API. Consulte Como rastrear a atividade da API.
  8. Para evitar cobranças na sua conta do Google Cloud . Consulte Limpeza.

Custos

Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.

Novos usuários do Google Cloud podem estar qualificados para um teste sem custo financeiro.

Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Para mais informações, consulte Limpeza.

Antes de começar

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Google Cloud project.

  3. Anote o ID do projeto, ele será necessário mais tarde.
  4. Você precisará que um aplicativo envie solicitações à API de amostra.

    • Usuários de Linux e macOS: este tutorial fornece um exemplo de uso de curl, que normalmente vem pré-instalado em seu sistema operacional. Caso não tenha curl, faça o download na página Versões e downloads (em inglês) do curl.
    • Usuários do Windows: neste tutorial, há um exemplo que usa Invoke-WebRequest (em inglês), que é compatível com o PowerShell 3.0 e versões posteriores.
  5. Faça o download da Google Cloud CLI.
  6. Atualize a CLI gcloud e instale os componentes do Endpoints.
    gcloud components update
  7. Verifique se a Google Cloud CLI (gcloud) está autorizada a acessar seus dados e serviços em Google Cloud:
    gcloud auth login
    Na nova guia do navegador que se abre, selecione uma conta.
  8. Defina o projeto padrão como o ID do projeto.
    gcloud config set project YOUR_PROJECT_ID

    Substitua YOUR_PROJECT_ID pela ID do seu projeto. Se você tiver outros projetos do Google Cloud e quiser usar gcloud para gerenciá-los, consulte Como gerenciar as configurações da CLI gcloud.

  9. Selecione a região em que você quer criar o aplicativo do App Engine. Execute o comando a seguir para visualizar uma lista de regiões:
    gcloud app regions list
  10. Crie um aplicativo do App Engine. Substitua YOUR_PROJECT_ID pelo ID do projeto Google Cloude YOUR_REGION pela região em que você quer que o aplicativo do App Engine seja criado.
      gcloud app create \
      --project=YOUR_PROJECT_ID \
      --region=YOUR_REGION
    
  11. Se a conta de serviço padrão do App Engine não tiver o papel de Editor (roles/editor), conceda as seguintes permissões:
    • Conceda roles/servicemanagement.serviceConsumer à conta de serviço padrão do App Engine no nível do serviço.
    • Conceda roles/servicemanagement.serviceController à conta de serviço padrão do App Engine no nível do projeto.

    Para informações sobre como conceder papéis à conta de serviço, consulte Gerenciar o acesso usando o Google Cloud console.

Obter o exemplo de código

Java

Para clonar ou fazer o download da API de amostra:

  1. O exemplo de código usa o Maven. Se você não tiver o Maven 3.3.9 ou versões posteriores, faça o download e instale-o.
  2. Clone o repositório do aplicativo de amostra na máquina local:
    git clone https://github.com/GoogleCloudPlatform/java-docs-samples

    Como alternativa, faça o download da amostra (em inglês) como um arquivo zip e o descompacte.

  3. Acesse o diretório que contém o exemplo de código:
    cd java-docs-samples/endpoints/getting-started
Python

Para clonar ou fazer o download da API de amostra:

  1. Clone o repositório do aplicativo de amostra na máquina local:
    git clone https://github.com/GoogleCloudPlatform/python-docs-samples

    Como alternativa, faça o download da amostra (em inglês) como um arquivo zip e o descompacte.

  2. Acesse o diretório que contém o exemplo de código:
    cd python-docs-samples/endpoints/getting-started
Go

Para clonar ou fazer o download da API de amostra:

  1. Verifique se a variável de ambiente GOPATH (em inglês) está configurada.
  2. Clone o repositório do app de amostra na máquina local:
    go get -d github.com/GoogleCloudPlatform/golang-samples/endpoints/getting-started
  3. Acesse o diretório que contém o exemplo de código:
    cd $GOPATH/src/github.com/GoogleCloudPlatform/golang-samples/endpoints/getting-started
PHP

Para clonar ou fazer o download da API de amostra:

  1. Clone o repositório do aplicativo de amostra na máquina local:
    git clone https://github.com/GoogleCloudPlatform/php-docs-samples

    Como alternativa, faça o download da amostra (em inglês) como um arquivo zip e o descompacte.

  2. Acesse o diretório que contém o exemplo de código:
    cd php-docs-samples/endpoints/getting-started
Ruby

Para clonar ou fazer o download da API de amostra:

  1. Clone o repositório do aplicativo de amostra na máquina local:
    git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples

    Como alternativa, faça o download da amostra (em inglês) como um arquivo zip e o descompacte.

  2. Acesse o diretório que contém o exemplo de código:
    cd ruby-docs-samples/endpoints/getting-started
NodeJS

Para clonar ou fazer o download da API de amostra:

  1. Clone o repositório do aplicativo de amostra na máquina local:
    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples

    Como alternativa, faça o download da amostra (em inglês) como um arquivo zip e o descompacte.

  2. Acesse o diretório que contém o exemplo de código:
    cd nodejs-docs-samples/endpoints/getting-started

Como configurar o Endpoints

É necessário ter um documento OpenAPI baseado em OpenAPI 2.0 ou OpenAPI 3.x que descreva a superfície dos seus apps e quaisquer requisitos de autenticação. Para saber mais, consulte Versões compatíveis da OpenAPI.

Também é preciso adicionar um campo específico do Google que contenha o URL de cada app para que o ESPv2 tenha as informações necessárias para invocar um app. Se você é novo na OpenAPI, consulte a visão geral da OpenAPI para mais informações.

OpenAPI 2.0

Para configurar o Endpoints usando uma especificação OpenAPI 2.0, use o arquivo openapi-appengine.yaml disponível no diretório dotnet-docs-samples-master\endpoints\getting-started do exemplo de código baixado.

O conteúdo da especificação OpenAPI 2.0 deve ser semelhante a este:

swagger: "2.0"
info:
  description: "A simple Google Cloud Endpoints API example."
  title: "Endpoints Example"
  version: "1.0.0"
host: "YOUR_PROJECT_ID.appspot.com"
consumes:
- "application/json"
produces:
- "application/json"
schemes:
- "https"
paths:
  "/echo":
    post:
      description: "Echo back a given message."
      operationId: "echo"
      produces:
      - "application/json"
      responses:
        200:
          description: "Echo"
          schema:
            $ref: "#/definitions/echoMessage"
      parameters:
      - description: "Message to echo"
        in: body
        name: message
        required: true
        schema:
          $ref: "#/definitions/echoMessage"
      security:
      - api_key: []
  "/auth/info/googlejwt":
    get:
      description: "Returns the requests' authentication information."
      operationId: "auth_info_google_jwt"
      produces:
      - "application/json"
      responses:
        200:
          description: "Authentication info."
          schema:
            $ref: "#/definitions/authInfoResponse"
      x-security:
      - google_jwt:
          audiences:
          # This must match the "aud" field in the JWT. You can add multiple
          # audiences to accept JWTs from multiple clients.
          - "echo.endpoints.sample.google.com"
  "/auth/info/googleidtoken":
    get:
      description: "Returns the requests' authentication information."
      operationId: "authInfoGoogleIdToken"
      produces:
      - "application/json"
      responses:
        200:
          description: "Authenication info."
          schema:
            $ref: "#/definitions/authInfoResponse"
      x-security:
      - google_id_token:
          audiences:
          # Your OAuth2 client's Client ID must be added here. You can add
          # multiple client IDs to accept tokens from multiple clients.
          - "YOUR-CLIENT-ID"

definitions:
  echoMessage:
    type: "object"
    properties:
      message:
        type: "string"
  authInfoResponse:
    properties:
      id:
        type: "string"
      email:
        type: "string"

securityDefinitions:
  # This section configures basic authentication with an API key.
  api_key:
    type: "apiKey"
    name: "key"
    in: "query"
  # This section configures authentication using Google API Service Accounts
  # to sign a json web token. This is mostly used for server-to-server
  # communication.
  google_jwt:
    authorizationUrl: ""
    flow: "implicit"
    type: "oauth2"
    # This must match the 'iss' field in the JWT.
    x-google-issuer: "jwt-client.endpoints.sample.google.com"
    # Update this with your service account's email address.
    x-google-jwks_uri: "https://www.googleapis.com/service_accounts/v1/jwk/YOUR-SERVICE-ACCOUNT-EMAIL"
  # This section configures authentication using Google OAuth2 ID Tokens.
  # ID Tokens can be obtained using OAuth2 clients, and can be used to access
  # your API on behalf of a particular user.
  google_id_token:
    authorizationUrl: ""
    flow: "implicit"
    type: "oauth2"
    x-google-issuer: "https://accounts.google.com"
    x-google-jwks_uri: "https://www.googleapis.com/oauth2/v1/certs"

Na linha com o campo "host", substitua YOUR_PROJECT_ID pelo ID do seu projeto do Google Cloud .

OpenAPI 3.x

Para configurar o Endpoints usando uma especificação OpenAPI 3.x, substitua o conteúdo do arquivo openapi-appengine.yaml disponível no diretório dotnet-docs-samples-master\endpoints\getting-started do exemplo de código baixado:

  1. Abra o arquivo openapi-appengine.yaml no editor de texto e substitua o conteúdo pelo seguinte:
    openapi: 3.0.4
    info:
      description: "A simple Google Cloud Endpoints API example."
      title: "Endpoints Example"
      version: "1.0.0"
    servers:
      - url: "https://YOUR_PROJECT_ID.appspot.com"
        x-google-endpoint: {}
    paths:
      "/echo":
        post:
          description: "Echo back a given message."
          operationId: "echo"
          requestBody:
            description: "Message to echo"
            required: true
            content:
              "application/json":
                schema:
                  $ref: "#/components/schemas/echoMessage"
          responses:
            "200":
              description: "Echo"
              content:
                "application/json":
                  schema:
                    $ref: "#/components/schemas/echoMessage"
          security:
            - api_key: []
      "/auth/info/googlejwt":
        get:
          description: "Returns the requests' authentication information."
          operationId: "auth_info_google_jwt"
          responses:
            "200":
              description: "Authenication info."
              content:
                "application/json":
                  schema:
                    $ref: "#/components/schemas/authInfoResponse"
          security:
            - google_jwt: []
      "/auth/info/googleidtoken":
        get:
          description: "Returns the requests' authentication information."
          operationId: "authInfoGoogleIdToken"
          responses:
            "200":
              description: "Authenication info."
              content:
                "application/json":
                  schema:
                    $ref: "#/components/schemas/authInfoResponse"
          security:
            - google_id_token: []
    
    components:
      schemas:
        echoMessage:
          type: "object"
          properties:
            message:
              type: "string"
        authInfoResponse:
          type: "object"
          properties:
            id:
              type: "string"
            email:
              type: "string"
    
      securitySchemes:
        # This section configures basic authentication with an API key.
        api_key:
          type: apiKey
          name: key
          in: query
        # This section configures authentication using Google API Service Accounts
        # to sign a json web token. This is mostly used for server-to-server
        # communication.
        google_jwt:
          type: oauth2
          flows:
            implicit:
              authorizationUrl: ""
              scopes: {}
          x-google-auth:
            issuer: "jwt-client.endpoints.sample.google.com"
            jwksUri: "https://www.googleapis.com/service_accounts/v1/jwk/YOUR_SERVICE_ACCOUNT_EMAIL"
            # This must match the "aud" field in the JWT. You can add multiple
            # audiences to accept JWTs from multiple clients.
            audiences:
              - "echo.endpoints.sample.google.com"
        # This section configures authentication using Google OAuth2 ID Tokens.
        # ID Tokens can be obtained using OAuth2 clients, and can be used to access
        # your API on behalf of a particular user.
        google_id_token:
          type: oauth2
          flows:
            implicit:
              authorizationUrl: ""
              scopes: {}
          x-google-auth:
            issuer: "https://accounts.google.com"
            jwksUri: "https://www.googleapis.com/oauth2/v1/certs"
            audiences:
              - "YOUR_CLIENT_ID"
  2. Salve o novo conteúdo de openapi.yaml.

Este tutorial usa uma extensão específica do Google para a especificação OpenAPI que permite configurar o nome do serviço. O método para especificar o nome do serviço depende da versão da especificação OpenAPI que você está usando.

OpenAPI 2.0

Use o campo host para especificar o nome do serviço:

host: YOUR_PROJECT_ID.appspot.com

Para configurar o Endpoints:

  1. Abra o arquivo openapi-appengine.yaml.
  2. No campo host, substitua YOUR_PROJECT_ID pelo ID do seu projeto Google Cloud .
  3. Salve o arquivo openapi-appengine.yaml.

OpenAPI 3.x

Use o campo url no objeto servers para especificar o nome do serviço:

servers:
- url: https://YOUR_PROJECT_ID.appspot.com
  x-google-endpoint: {}

Para configurar o Endpoints:

  1. Abra o arquivo openapi-appengine.yaml.
  2. Se o arquivo openapi-appengine.yaml tiver um campo host, remova-o.
  3. Adicione um objeto servers conforme mostrado.
  4. No campo url, substitua YOUR_PROJECT_ID pelo ID do seu projeto Google Cloud .
  5. Salve o arquivo openapi-appengine.yaml.

Implantar a configuração do Endpoints

Para implantar a configuração do Endpoints, use o comando gcloud endpoints services deploy. Ele utiliza o Service Management para criar um serviço gerenciado.

Para implantar a configuração do Endpoints:

  1. Verifique se você está no diretório em que o arquivo de configuração openapi.yaml está localizado.
  2. Faça upload da configuração e crie um serviço gerenciado:
    gcloud endpoints services deploy openapi.yaml
    

Em seguida, o comando gcloud chama a API Service Management para criar um serviço gerenciado com o nome especificado no campo host ou servers.url do arquivo openapi.yaml. O Service Management configura o serviço de acordo com as configurações no arquivo openapi.yaml. Ao fazer alterações em openapi.yaml, é necessário reimplantar o arquivo para atualizar o serviço do Endpoints.

Durante a criação e a configuração do serviço, a Service Management envia informações ao terminal. Ignore os avisos sobre os caminhos no arquivo openapi.yaml que não exigem uma chave de API. Quando a configuração do serviço é concluída, o Service Management mostra uma mensagem com o ID de configuração e o nome do serviço:

Service Configuration [2017-02-13r0] uploaded for service [example-project-12345.appspot.com]

No exemplo anterior, 2017-02-13r0 é o ID de configuração do serviço e example-project-12345.appspot.com é o serviço do Endpoints. O ID de configurações de serviço consiste em um carimbo de data e um número de revisão. Se você implantar o arquivo openapi.yaml novamente no mesmo dia, o número de revisão será incrementado no ID de configurações de serviço. Você pode ver as configurações de serviço do Endpoints na página Endpoints > Serviços no Google Cloud console.

Se você receber uma mensagem de erro, consulte Como solucionar problemas de implantação na configuração do Endpoints.

Como verificar os serviços obrigatórios

No mínimo, o Endpoints e o ESP exigem a ativação dos seguintes serviços do Google:
Nome Título
servicemanagement.googleapis.com API Service Management
servicecontrol.googleapis.com API Service Control

Na maioria dos casos, o comando gcloud endpoints services deploy ativa os serviços necessários. No entanto, o comando gcloud é concluído com êxito, mas não ativa os serviços necessários nas seguintes circunstâncias:

  • Você usou um aplicativo de terceiros, como o Terraform, e não incluiu esses serviços.

  • Você implantou a configuração do Endpoints em um projeto doGoogle Cloud atual em que esses serviços foram explicitamente desativados.

Use o seguinte comando para confirmar se os serviços necessários estão ativados:

gcloud services list

Se você não encontrar os serviços necessários listados, ative-os:

gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com

Ative também seu serviço do Endpoints:

gcloud services enable ENDPOINTS_SERVICE_NAME

Para determinar o ENDPOINTS_SERVICE_NAME, é possível:

  • Depois de implantar a configuração do Endpoints, acesse a página Endpoints no Console do Cloud. A lista de ENDPOINTS_SERVICE_NAME possíveis é mostrada na coluna Nome do serviço.

  • Para a OpenAPI, o ENDPOINTS_SERVICE_NAME é o que você especificou no campo host da especificação do OpenAPI. Para gRPC, o ENDPOINTS_SERVICE_NAME é o que você especificou no campo name da configuração do gRPC Endpoints.

Para mais informações sobre os comandos gcloud, consulte serviços gcloud.

Implantar o back-end da API

Até agora, você implantou o documento da OpenAPI no Service Management, mas não o código que exibe o back-end da API. Nesta seção, veja como implantar a API de amostra e o ESP no App Engine.

Para implantar o back-end da API:

  1. Adicione seu nome de serviço ao arquivo app.yaml

    Java

    Abra o arquivo endpoints/getting-started/src/main/appengine/app.yaml.

    endpoints_api_service:
      # The following values are to be replaced by information from the output of
      # 'gcloud endpoints services deploy openapi-appengine.yaml' command.
      name: ENDPOINTS-SERVICE-NAME
      rollout_strategy: managed

    Python

    Abra o arquivo endpoints/getting-started/app.yaml.

    endpoints_api_service:
      # The following values are to be replaced by information from the output of
      # 'gcloud endpoints services deploy openapi-appengine.yaml' command.
      name: ENDPOINTS-SERVICE-NAME
      rollout_strategy: managed

    Go

    Abra o arquivo endpoints/getting-started/app.yaml.

    endpoints_api_service:
      # The following values are to be replaced by information from the output of
      # 'gcloud endpoints services deploy openapi-appengine.yaml' command.
      name: ENDPOINTS-SERVICE-NAME
      rollout_strategy: managed

    PHP

    Abra o arquivo endpoints/getting-started/app.yaml.

    endpoints_api_service:
      # The following values are to be replaced by information from the output of
      # 'gcloud endpoints services deploy openapi-appengine.yaml' command. If you have
      # previously run the deploy command, you can list your existing configuration
      # ids using the 'configs list' command as follows:
      #
      #     gcloud endpoints configs list --service=YOUR-PROJECT-ID.appspot.com
      #
      name: ENDPOINTS-SERVICE-NAME
      rollout_strategy: managed

    Ruby

    Abra o arquivo endpoints/getting-started/app.yaml.

    endpoints_api_service:
      # The following values are to be replaced by information from the output of
      # 'gcloud endpoints services deploy openapi-appengine.yaml' command.
      name: ENDPOINTS-SERVICE-NAME
      rollout_strategy: managed

    NodeJS

    Abra o arquivo endpoints/getting-started/app.yaml.

    endpoints_api_service:
      # The following values are to be replaced by information from the output of
      # 'gcloud endpoints services deploy openapi-appengine.yaml' command.
      name: ENDPOINTS-SERVICE-NAME
      rollout_strategy: managed

    Substitua ENDPOINTS-SERVICE-NAME pelo nome do serviço do Endpoints. Ele é o mesmo que foi configurado no campo host do documento da OpenAPI. Exemplo:

    endpoints_api_service:
      name: example-project-12345.appspot.com
      rollout_strategy: managed

    A opção rollout_strategy: managed configura o ESP para usar as configurações de serviço implantadas mais recentes. Quando você especifica essa opção, até 5 minutos depois de implantar uma nova configuração de serviço, o ESP detecta a alteração e começa a usá-la automaticamente. Recomendamos especificar essa opção em vez de um ID de configuração específico para uso do ESP.

  2. Salve o arquivo app.yaml.
  3. Como a seção endpoints_api_service está incluída no arquivo app.yaml, o comando gcloud app deploy implanta e configura o ESP em um contêiner separado para o ambiente flexível do App Engine. Todo o tráfego de solicitação é roteado pelo ESP, que atua como proxy em solicitações e respostas de e para o contêiner que executa o código de servidor do back-end.

  4. Verifique se você está no diretório onde o arquivo de configuração openapi.yaml está localizado.
  5. Execute o seguinte comando para implantar a API e o ESP de amostra no App Engine:
  6. Java

    Implante usando o Maven:

    mvn appengine:stage
    gcloud app deploy target/appengine-staging
    
    Python
    gcloud app deploy
    Go
    gcloud app deploy
    PHP
    gcloud app deploy
    Ruby
    gcloud app deploy
    NodeJS
    gcloud app deploy

    O comando gcloud app deploy cria um registro DNS no formato YOUR_PROJECT_ID.appspot.com, usado ao enviar solicitações à API. Recomendamos que você espere alguns minutos antes de enviar solicitações para a API enquanto o Google App Engine é completamente inicializado.

Caso receba uma mensagem de erro, consulte Como solucionar problemas de implantação flexível no App Engine.

Para mais informações, consulte Como implantar o back-end da API.

Como enviar solicitações à API

Agora que o serviço está em execução no App Engine, é possível enviar solicitações para ele.

Crie uma chave de API e defina uma variável de ambiente

O exemplo de código requer uma chave de API. Para simplificar a solicitação, defina uma variável de ambiente para a chave da API.

  1. No mesmo projeto Google Cloud usado para a API, crie uma chave de API na página de credenciais da API. Se você quiser criar uma chave de API em um projeto diferente do Google Cloud , consulte Como ativar uma API no projeto do Google Cloud .

    Acessar a página Credenciais

  2. Clique em Criar credenciais e, em seguida, selecione Chave de API.
  3. Copie a chave para a área de transferência.
  4. Clique em Fechar.
  5. No computador local, cole a chave da API para atribuí-la a uma variável de ambiente:
    • No Linux ou no macOS: export ENDPOINTS_KEY=AIza...
    • No Windows PowerShell: $Env:ENDPOINTS_KEY="AIza..."

Enviar a solicitação

LINUX OU MACOS

  1. Crie uma variável de ambiente para o URL do projeto do App Engine. Substitua YOUR_PROJECT_ID pelo Google Cloud ID do projeto:

    export ENDPOINTS_HOST=https://YOUR_PROJECT_ID.appspot.com

  2. Envie uma solicitação HTTP usando as variáveis de ambiente ENDPOINTS_HOST e ENDPOINTS_KEY definidas anteriormente:

    curl --request POST \
      --header "content-type:application/json" \
      --data '{"message":"hello world"}' \
      "${ENDPOINTS_HOST}/echo?key=${ENDPOINTS_KEY}"

No curl anterior:

  • A opção --data especifica os dados a serem enviados para a API.
  • A opção --header especifica que os dados estão no formato JSON.

PowerShell

  1. Crie uma variável de ambiente para o URL do projeto do App Engine. Substitua YOUR_PROJECT_ID pelo Google Cloud ID do projeto:

    $Env:ENDPOINTS_HOST="https://YOUR_PROJECT_ID.appspot.com"

  2. Envie uma solicitação HTTP usando as variáveis de ambiente ENDPOINTS_HOST e ENDPOINTS_KEY definidas anteriormente:

    (Invoke-WebRequest -Method POST -Body '{"message": "hello world"}' `
        -Headers @{"content-type"="application/json"} `
        -URI "$Env:ENDPOINTS_HOST/echo?key=$Env:ENDPOINTS_KEY").Content
    

No exemplo acima, as duas primeiras linhas terminam em um acento grave. Quando você colar o exemplo no PowerShell, verifique se não há espaço após os acentos graves. Para informações sobre as opções usadas na solicitação de exemplo, consulte Invoke-WebRequest (em inglês) na documentação da Microsoft.

Aplicativo de terceiros

É possível usar um aplicativo de terceiros, como o Postman, uma extensão do navegador Chrome, para enviar a solicitação:

  • Selecione POST como o verbo HTTP.
  • Para o cabeçalho, selecione a chave content-type e o valor application/json.
  • Para o corpo, digite isto:
    {"message":"hello world"}
  • No URL, use o endereço e a chave de API do appspot.com em vez das variáveis de ambiente. Por exemplo:
    https://example-project-12345.appspot.com/echo?key=AIza...

A mensagem enviada é retornada pela API com a seguinte resposta:

{
  "message": "hello world"
}

Se não receber uma resposta bem-sucedida, consulte Como solucionar problemas em erros de resposta.

Você acaba de implantar e testar uma API no Endpoints.

Como rastrear atividade da API

  1. Veja os gráficos de atividades da API na página "Endpoints".

    Ir para a página Serviços do Endpoints

    Pode levar alguns instantes para que a solicitação apareça nos gráficos.

  2. Verifique os registros de solicitações da API na página "Visualizador de registros".

    Acessar a página Análise de registros

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.

Consulte Como excluir uma API e as instâncias relacionadas para saber como interromper os serviços usados neste tutorial.

A seguir