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