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