Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2022-11-09 GMT+08:00

Criação de uma solicitação de API

Esta seção descreve como fazer uma solicitação de API REST e usa a API do IAM para obtenção de um token de usuário como um exemplo para descrever como chamar uma API. O token obtido é usado para autenticar a chamada de outras APIs.

URI de solicitação

Um URI de solicitação está no seguinte formato:

{URI-scheme} :// {Endpoint} / {resource-path} ? {query-string}

Embora uma solicitação URI esteja incluída em um cabeçalho de solicitação, a maioria das linguagens de programação ou estruturas exigem que a solicitação URI seja transmitida separadamente, em vez de ser transmitida em uma mensagem de solicitação.

  • URI-scheme:

    Protocolo usado para transmitir solicitações. Todas as API usam HTTPS.

  • Endpoint:

    Nome de domínio ou endereço IP do servidor com o ponto de extremidade do serviço REST. Obtenha o valor de Regiões e Endpoints.

    Por exemplo, o ponto final do IAM na região CN-Hong Kong é iam.ap-southeast-1.myhuaweicloud.com.

  • resource-path:

    Caminho de acesso da API para executar uma operação especificada. Obtenha o valor do URI da API. Por exemplo, o resource-path da API para obter um token de usuário é /v3/auth/tokens.

  • query-string:

    Parâmetro de consulta, que é opcional. Nem todas as API têm um parâmetro de consulta. Certifique-se de que um ponto de interrogação (?) esteja incluído antes de um parâmetro de consulta no formato "Nome do parâmetro = valor do parâmetro". Por exemplo, ? limit=10 indica que um máximo de 10 partes de dados devem ser visualizadas.

Por exemplo, para obter um token do IAM na região CN-Hong Kong, obtenha o endpoint do IAM (iam.ap-southeast-1.myhuaweicloud.com) para essa região e o resource-path (/v3/auth/tokens) no URI da API usada para obter um token de usuário. Em seguida, construa o URI da seguinte forma:

1
https://iam.ap-southeast-1.myhuaweicloud.com/v3/auth/tokens
Figura 1 Exemplo de URI

Para simplificar a exibição de URI, cada API é fornecida apenas com um resource-path e um método de solicitação. Isso ocorre porque o valor do URI-scheme de todas as API é HTTPS, e os endpoints de um serviço são os mesmos em uma região. Portanto, as duas partes são omitidas.

Métodos de solicitação

Os métodos de solicitação baseados em HTTP, que também são chamados de operações ou ações, especificam o tipo de operações que você está solicitando.

  • GET: solicita que o servidor retorne os recursos especificados.
  • PUT: solicita que o servidor atualize os recursos especificados.
  • POST: solicita que o servidor adicione recursos ou execute operações especiais.
  • DELETE: solicita que o servidor exclua recursos especificados, por exemplo, um objeto.
  • HEAD: solicita um cabeçalho de recurso do servidor.
  • PATCH: solicita ao servidor que atualize o conteúdo parcial de um recurso especificado. Se o recurso não estiver disponível, o método PATCH é usado para criar um recurso.

Por exemplo, no URI para obtenção de um token de usuário, o método de requisição é POST, e a requisição é a seguinte:

POST https://iam.ap-southeast-1.myhuaweicloud.com/v3/auth/tokens

Cabeçalho da solicitação

Você também pode adicionar campos adicionais a uma solicitação, como os campos exigidos por um URI especificado ou um método HTTP. Por exemplo, adicione Content-Type que define um tipo de corpo de solicitação para solicitar as informações de autenticação.

Cabeçalhos de solicitação comuns são os seguintes:

  • Content-Type: especifica o tipo ou formato do corpo da solicitação. Este campo é obrigatório e seu valor padrão é application/json. Para outros valores, a descrição será fornecida para APIs específicas.
  • X-Auth-Token: especifica um token de usuário apenas para autenticação de API baseada em token. O token de usuário é uma resposta à API usada para obter um token de usuário. Esta API é a única que não requer autenticação.

    Além de oferecer suporte à autenticação usando tokens, as API da DCS oferecem suporte à autenticação usando AK/SK, que usa SDKs para assinar uma solicitação. Durante a assinatura, os cabeçalhos Authorization (autenticação de assinatura) e X-Sdk-Date (hora em que uma solicitação é enviada) são adicionados automaticamente na solicitação.

    Para mais detalhes, consulte Autenticação usando AK/SK.

A API para obtenção de um token de usuário não requer autenticação. Portanto, essa API requer apenas a adição do campo Content-Type. A solicitação com o cabeçalho Content-Type adicionado é a seguinte:

POST https://iam.ap-southeast-1.myhuaweicloud.com/v3/auth/tokens
Content-Type: application/json

Corpo da solicitação

O corpo de uma solicitação geralmente é enviado em um formato estruturado, conforme especificado no campo de cabeçalho Content-Type. O corpo da solicitação transfere o conteúdo, exceto o cabeçalho da solicitação.

O corpo da solicitação varia de acordo com as API. As certas API não exigem o corpo da solicitação, como as API GET e DELETE.

No caso da API usada para obter um token de usuário, os parâmetros da solicitação e a descrição do parâmetro podem ser obtidos da solicitação da API. O seguinte fornece um exemplo de solicitação com um corpo incluído. Substitua username, domainname, ******** (login senha) e xxxxxxxxxxxxxxxxxx (ID do projetocomo ap-southeast-1) com os valores reais. Obtenha o ID do projeto na coluna Region de Regiões e Endpoints.

scope especifica onde um token entra em vigor. No exemplo a seguir, o token terá efeito somente nos recursos especificados pelo código do projeto. Você pode definir o escopo para uma conta ou um projeto em uma conta. Para obter detalhes, consulte obtenção de um token de usuário.

POST https://iam.ap-southeast-1.myhuaweicloud.com/v3/auth/tokens
Content-Type: application/json

{
    "auth": {
        "identity": {
            "methods": [
                "password"
            ],
            "password": {
                "user": {
                    "name": "username",
                    "password": "********",
                    "domain": {
                        "name": "domainname"
                    }
                }
            }
        },
        "scope": {
            "project": {
                "name": "xxxxxxxxxxxxxxxxxx"
            }
        }
    }
}

Se todos os dados exigidos por uma solicitação estiverem disponíveis, você poderá enviar a solicitação para chamar uma API por meio de curl, Postman ou coding. Para a API de obtenção de um token de usuário, x-subject-token no cabeçalho de resposta é o token de usuário desejado. Em seguida, você pode usar o token para autenticar a chamada de outras API.