Feito de uma solicitação de API
Esta seção descreve a estrutura de uma solicitação de API REST e descreve como chamar uma API por obtenção de um token de usuário of the IAM service. O token obtido é usado para autenticar a chamada de outras API.
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 API usam HTTPS. |
Endpoint |
Nome de domínio ou endereço IP do servidor que possui o serviço REST. O endpoint varia entre serviços em diferentes regiões. Ele pode ser obtido do Regiões e endpoints. Por exemplo, o endpoint 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. Certifique-se um ponto 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 o token IAM na região CN-Hong Kong, obter o endpoint do IAM (iam.ap-southeast-1.myhuaweicloud.com) para essa 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.ap-southeast-1.myhuaweicloud.com/v3/auth/tokens
Para simplificar a exibição de URI neste documento, cada API é fornecida apenas com um resource-path e um método de solicitação. O URI-scheme de todas as API é HTTPS, e os endpoints de todas as API na mesma região são idênticos.
Métodos de solicitação
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. |
DELETE |
Solicita que o servidor exclua 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 ao servidor que 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 URI ou HTTP especificado. Por exemplo, para solicitar as informações de autenticação, adicione Content-type, que especifica o tipo de corpo da solicitação.
Campo |
Descrição |
Obrigatório |
Exemplo |
---|---|---|---|
x-sdk-date |
Hora em que o pedido é enviado. A hora é no formato YYYYMMDD'T'HHMMSS'Z'. O valor é a hora GMT atual do sistema. |
Não |
20150907T101459Z |
Host |
Informações do servidor do recurso que está sendo solicitado. O valor pode ser obtido a partir do URL da API de serviço. O valor está no formato nome do host[: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 |
code.test.com ou code.test.com:443 |
Content-Type |
Tipo MIME do corpo da solicitação. É aconselhável usar o valor padrão application/json. Para as API usadas para carregar objetos ou imagens, o valor pode variar dependendo do tipo de fluxo. |
Sim |
aplicação/json |
Content-Length |
Comprimento do corpo da solicitação. A unidade é byte. |
Não |
3495 |
X-Project-id |
ID do projeto. Obtenha o ID do projeto seguindo as instruções em Obtenção de um ID do projeto. |
Não |
e9993fc787d94b6c886cbaa340f9c0f4 |
X-Auth-Token |
Token do usuário. The user token is a response to the API used to obtain a user token. This API is the only one that does not require authentication. The X-Subject-Token value contained in the returned message header is the token. |
No Este parâmetro é obrigatório para autenticação baseada em token. |
O seguinte é parte de um exemplo de token: MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ |
X-Language |
Idioma de solicitação |
Não |
zh_cn |
A API usada para obter um token de usuário não requer autenticação. Portanto, apenas o campo Content-typeprecisa 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
Corpo da solicitação
O corpo de uma solicitação geralmente é enviado em um formato estruturado (JSON ou XML), conforme especificado no campo cabeçalho Content-Type. O corpo da solicitação transfere o conteúdo, exceto o cabeçalho da solicitação. Se o corpo da solicitação contiver caracteres chineses, esses caracteres devem ser codificados em UTF-8.
O corpo da solicitação varia entre as API. Algumas API não exigem o corpo da solicitação, como as API 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 user_name, domainname (account name), ******** (login password), e xxxxxxxxxxxxxxxxxx (ID do projeto) por reais. Obtenha o ID do projeto de Regiões e endpoints from the database administrator.
O parâmetro scope especifica onde um token entra em vigor. No exemplo, o token entra em vigor somente nos recursos especificados pelo projeto. 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.ap-southeast-1.myhuaweicloud.com/v3/auth/tokens
Content-type: application/json
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"name": "user_name",
"password": "********",
"domain": {
"name": "domainname"
}
}
}
},
"scope": {
"project": {
"id": "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 coding. Na resposta à API usada para obter um token de usuário, x-subject-token é o token de usuário desejado. Esse token pode ser usado para autenticar a chamada de outras API.