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 2024-09-29 GMT+08:00

Fazer uma solicitação de API

Esta seção descreve a estrutura de uma 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 consiste no seguinte:

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

Embora um URI de solicitação esteja incluído em um cabeçalho de solicitação, a maioria das linguagens de programação ou estruturas exige que o URI de solicitação seja transmitido separadamente, em vez de ser transmitido numa mensagem de solicitação.

Tabela 1 Parâmetros em um URI

Parâmetro

Descrição

URI-scheme

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

Endpoint

Nome de domínio ou endereço IP do servidor que suporta o serviço REST. O ponto de extremidade varia entre serviços em diferentes regiões. Ele pode ser obtido em Regiões e pontos de extremidade.

Por exemplo, o ponto de extremidade do IAM na região CN North-Beijing1 é iam.cn-north-1.myhuaweicloud.com.

resource-path

Caminho de acesso de uma API para executar uma operação especificada. Obtenha o caminho a partir do URI de uma 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. Verifique se um ponto de interrogação (?) está incluído antes de cada 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 registros de dados serão exibidos.

Por exemplo, para obter um token do IAM na região CN North-Beijing1, obter o ponto de extremidade (iam.cn-north-1.myhuaweicloud.com) para essa região e o caminho do recurso (/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.cn-north-1.myhuaweicloud.com/v3/auth/tokens
Figura 1 Exemplo de URI

Para simplificar a exibição de URI neste documento, cada API é fornecida apenas com um caminho de recurso e um método de solicitação. O URI-scheme de todas as APIs é HTTPS, e os pontos de extremidade de todas as APIs na mesma região são idênticos.

Métodos de solicitação

O protocolo HTTP define os seguintes métodos de solicitação que podem ser usados para enviar uma solicitação ao servidor:
Tabela 2 Métodos de HTTP

Método

Descrição

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.

Por exemplo, no caso da API usada para obter um token de usuário, o método de solicitação é POST. A solicitação é o seguinte:

1
POST https://iam.cn-north-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, para solicitar as informações de autenticação, adicione Content-Type, que especifica o tipo de corpo da solicitação.

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

Nome

Descrição

Obrigatório

Exemplo

Content-Type

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

Sim

application/json

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 de AK/SK.

code.test.com

ou

code.test.com:443

Content-Length

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

Não

3495

X-Project-Id

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

Não

e9993fc787d94b6c886cbaa340f9c0f4

X-Auth-Token

Especifica o token do usuário.

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.

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

Não

Este parâmetro é obrigatório para a autenticação de token.

O seguinte é parte de um exemplo de token:

MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ

X-Language

Tipo de linguagem da solicitação. O valor padrão é en-us.

Valor:

  • en-us
  • zh-cn

Não

en-us

A API usada para obter um token de usuário não requer autenticação. Portanto, apenas o campo Content-Type precisa ser adicionado às solicitações para chamar a API. Um exemplo de tais solicitações é o seguinte:
1
2
POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens
Content-Type: application/json

(Opcional) Corpo de solicitação

Esta parte é opcional. O corpo de uma solicitação geralmente é enviado em um formato estruturado (por exemplo, JSON ou XML), conforme especificado no campo de cabeçalho Content-Type. Se o corpo da solicitação contiver caracteres de largura total, esses caracteres deverão ser codificados em UTF-8.

O corpo da solicitação varia entre as APIs. Algumas APIs não exigem o corpo da solicitação, como as APIs solicitadas usando os métodos 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, ******** (senha de logon) e xxxxxxxxxxxxxxxxxx (nome do projeto, como cn-north-1) por valores reais. Ele pode ser obtido em Regiões e pontos de extremidade.

O parâmetro scope especifica onde um token entra em vigor. Você pode definir scope para uma conta ou um projeto em uma conta. No exemplo a seguir, o token tem efeito somente para os recursos em um projeto especificado. Para obter mais informações sobre essa API, consulte Obtenção de um token de usuário.

POST https://iam.cn-north-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 necessários para a solicitação da API estiverem disponíveis, você poderá enviar a solicitação para chamar a API por meio de curl, Postman ou codificação. Na resposta à API usada para obter um token de usuário, x-subject-token é o token de usuário desejado. Este token pode ser usado para autenticar a chamada de outras APIs.