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

Solicitação

Esta seção descreve a estrutura de uma API REST e usa a API do IAM para obter um token de usuário como um exemplo para descrever 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 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 possui o serviço REST. O ponto de extremidade varia entre serviços em diferentes regiões.

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

resource-path

Caminho de recurso de uma API. Obtenha o caminho a partir do URI de uma API. Por exemplo, o resource-path da API para obter um token de usuário é /v3/auth/tokens.

query-string

(Opcional) Parâmetro de consulta. Verifique se um sinal 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 consultados.

Por exemplo, para obter um token de IAM na região CN North-Beijing4, obter o ponto de extremidade do IAM (iam.cn-north-4.myhuaweicloud.com) nessa 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:

https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens
Figura 1 Exemplo de URI

Para simplificar a exibição do URI, este documento fornece apenas o resource-path e o método de solicitação no URI de cada API. O URI-scheme de todas as APIs é https, e os pontos de extremidade em uma região são os mesmos.

Métodos de solicitação

O protocolo HTTP define os seguintes métodos de solicitação para enviar solicitações a um servidor.

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

HEAD

Solicita cabeçalhos de recurso de um servidor.

PATCH

Solicita que um servidor atualize parte dos recursos especificados.

Se o recurso solicitado não existir, o servidor pode criar um recurso usando o método PATCH.

Por exemplo, no caso do URI usado para obter um token de usuário, o método de solicitação é POST. A solicitação é o seguinte:
POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens

Cabeçalho da solicitação

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

Para obter detalhes sobre cabeçalhos de solicitação comuns, consulte Tabela 3.

Tabela 3 Campos comuns nos cabeçalhos da solicitação

Parâmetro

Descrição

Obrigatório

Exemplo

Host

Especifica o servidor para o qual uma solicitação é enviada, que pode ser obtida do URL da API de serviço. O valor está no formato de Nome de host:número da porta. 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 de chave de acesso (AK)/chave de acesso secreta (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 serão descritos nas APIs específicas.

Sim

application/json

Content-Length

Especifica o comprimento de um corpo de solicitação, em bytes.

Não

3495

X-Project-Id

Especifica um ID do projeto. Você pode obter o ID do projeto, referindo-se a Obtenção do ID do 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 multiprojeto.

e9993fc7************baa340f9c0f4

Não

Especifica um token de usuário.

Um token de usuário é transportado em resposta à API para obter um token de usuário. Esta API é a única que não requer autenticação.

O valor de X-Subject-Token no cabeçalho da resposta é um token.

Não

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

O seguinte é parte de um exemplo de token:

MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ

As APIs também suportam a autenticação 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 detalhes sobre a autenticação AK/SK, consulte Autenticação.

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

Corpo da solicitação

Esta parte é opcional. Um corpo de solicitação geralmente é enviado em um formato estruturado (por exemplo, JSON ou XML), que é especificado por Content-Type no cabeçalho da solicitação. Ele é 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 deverão ser codificados em UTF-8.

Os corpos de solicitação variam de acordo com as APIs. Algumas APIs não exigem o corpo da solicitação, como as APIs solicitadas usando os métodos GET e DELETE.

Para a API usada para obter um token de usuário, você pode obter os parâmetros da solicitação e a descrição do parâmetro na 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, por exemplo, cn-north-1) pelos valores reais.

O campo 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 só entra em vigor em um projeto especificado. Para obter detalhes, 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
POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokensContent-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 a API por meio de curl, Postman ou codificação. Na resposta à API para obter um token de usuário, o x-subject-token carrega um token de usuário. Você pode usar esse token para autenticar a chamada de outras API.