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 2023-05-06 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 um URI de solicitação esteja incluída em um cabeçalho de solicitação, a maioria das linguagens de programação ou estruturas exigem que o URI de solicitação seja transmitida separadamente, em vez de ser transmitida em uma mensagem de solicitação.

Tabela 1 Descrição do parâmetro de URI

Parâmetro

Descrição

URI-scheme

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

Endpoint

Especifica o nome de domínio ou o endereço IP do servidor que carrega o ponto de extremidade do serviço REST. Obtenha o valor de de Regiões e pontos de extremidadeRegiões e pontos de extremidade.

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 usada 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.

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 de URI-scheme de todas as API é HTTPS e os pontos de extremidade em uma região são os mesmos. 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.
Tabela 2 Métodos de HTTP

Método

Descrição

GET

Solicita que um servidor retorne os recursos especificados.

PUT

Solicita que um servidor atualize os recursos especificados.

POST

Solicita que um servidor adicione recursos ou execute operações especiais.

DELETE

Solicita que um servidor exclua recursos especificados, por exemplo, um objeto.

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.

Tabela 3 lista campos comuns de cabeçalho de solicitação.
Tabela 3 Campos comuns de cabeçalho de solicitação

Nome

Descrição

Obrigatoriedade

Exemplo

Host

Especifica as informações do servidor solicitadas, que podem ser obtidas a partir do URL da API de serviço. O valor está no formato hostname[:port]. Se o número da porta não for especificado, a porta padrão será usada. O número de porta padrão para https é 443.

Não

Este parâmetro é obrigatório para a autenticação AK/SK.

code.test.com

ou

code.test.com:443

Content-Type

Especifica o Tipo do corpo da solicitação MIME. É aconselhável usar o valor padrão application/json. Para as API usadas para carregar objetos ou imagens, o valor pode variar dependendo do tipo de fluxo.

Sim

application/json

Content-Length

Especifica o comprimento do corpo da solicitação. A unidade é byte.

Esse parâmetro é opcional para solicitações POST, mas deve ser deixado em branco para solicitações GET.

3495

X-Project-Id

Especifica a ID do projeto. Obtenha o ID do projeto seguindo as instruções em Obtenção de um ID de projeto.

Não

Esse parâmetro é obrigatório para solicitações que usam autenticação AK/SK no cenário DeC (Dedicated Cloud) ou cenário de vários projetos.

e9993fc787d94b6c886cbaa340f9c0f4

X-Auth-Token

Especifica o token do usuário.

Depois que a solicitação é processada, o valor de X-Subject-Token no cabeçalho é o valor do token.

Não

Este parâmetro é obrigatório para autenticação baseada em token.

O seguinte é parte de um exemplo de token:

MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ

Além de suportar a autenticação baseada em token, as APIs suportam a autenticação usando a chave de acesso ID/chave de acesso secreta (AK/SK). Durante a autenticação baseada em AK/SK, um SDK é usado para assinar a solicitação, os campos de cabeçalho Authorization (informações de assinatura) e X-Sdk-Date (hora em que a solicitação é enviada) são adicionados automaticamente à solicitação.

Para obter mais informações, consulte AK/SK-based Authentication em Autenticação.

A API para obter 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

(Opcional)Corpo de solicitação

Esta parte é opcional. Um corpo de solicitação é geralmente enviado em um formato estruturado (por exemplo, JSON ou XML), correspondente ao Content-Type no cabeçalho da solicitação, e é usado para transferir conteúdo diferente do cabeçalho da solicitação. Se o corpo da solicitação contiver caracteres de largura total, esses caracteres devem ser codificados em UTF-8.

O corpo da solicitação varia conforme 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, domianname, ******** (login senha) e xxxxxxxxxxxxxxxxxx (ID do projeto, por exemplo, ap-southeast-1) pelos valores reais. Para regiões e endpoints, consulte Regiões e pontos de extremidade.

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": "domianname"
                    }
                }
            }
        },
        "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 usada para obter 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.