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-10 GMT+08:00

Fazer uma solicitação de API

Esta seção descreve a estrutura de 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 demonstrar como chamar uma API. O token obtido pode então ser usado para autenticar a chamada das 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ído no cabeçalho da solicitação, a maioria das linguagens de programação ou estruturas exigem que o URI de solicitação seja transmitido separadamente.

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

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. Pode ser obtido de Regiões e pontos de extremidade.

Por exemplo, o ponto de extremidade do IAM na região CN-Hong Kong é iam.ap-southeast-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 sinal de interrogação (?) está incluído antes de cada parâmetro de consulta no formato Parameter name=Parameter value. 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-Hong Kong, obtenha o ponto de extremidade do IAM (iam.ap-southeast-1.myhuaweicloud.com) para esta 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

To simplify the URI display in this document, each API is provided only with a resource-path and a request method. The URI-scheme of all APIs is HTTPS, and the endpoints of all APIs in the same region are identical.

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 ao servidor que retorne os recursos especificados.

PUT

Solicita ao servidor que atualize os recursos especificados.

POST

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

DELETE

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

HEAD

O mesmo que GET, exceto que o servidor deve retornar apenas o cabeçalho da resposta.

PATCH

Solicita que o servidor atualize o conteúdo parcial de um recurso especificado.

Se o recurso não existir, um novo recurso será criado.

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:

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

Cabeçalho da solicitação

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

Os campos comuns do cabeçalho da solicitação são os seguintes.
Tabela 3 Campos comuns de cabeçalho de solicitação

Parâmetro

Descrição

Obrigatório

Exemplo de valor

Host

Especifica o nome de domínio do servidor e o número da porta dos recursos que estão sendo solicitados. O valor pode ser obtido a partir do URL da API de serviço. O valor está no formato de Hostname:Port number. 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 campo é obrigatório para autenticação AK/SK.

code.test.com

ou

code.test.com:443

Content-Type

Especifica o tipo (ou formato) do corpo da mensagem. O valor padrão application/json é recomendado. Outros valores deste campo serão fornecidos para APIs específicas, se houver.

Sim

application/json

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

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

e9993fc787d94b6c886cbaa340f9c0f4

Não

Especifica o token do usuário.

É uma resposta à API para obtenção de um token de usuário (esta é a única API que não requer autenticação).

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

Não

Este campo é obrigatório para autenticação de token.

O seguinte é parte de um exemplo de token:

MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ

Além de oferecer suporte à autenticação usando tokens, as APIs 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 obter mais detalhes, consulte "Autenticação usando AK/SK" em Autenticação.

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:

POST https://iam.ap-southeast-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, 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 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 de solicitação e a descrição do parâmetro podem ser obtidos a partir 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) pelos valores reais. Obtenha um nome de projeto de 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 esta API, consulte Obtenção de um token de usuário.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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 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.