Criação de uma solicitação de API
Esta seção descreve como fazer 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 descrever como chamar uma API. O token obtido é usado para autenticar a chamada de 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ída em um cabeçalho de solicitação, a maioria das linguagens de programação ou estruturas exigem que o URI de solicitação seja transmitida separadamente, em vez de ser transmitida em uma mensagem de solicitação.
Parâmetro |
Descrição |
---|---|
URI-scheme |
Protocolo usado para transmitir solicitações. Todas as APIs usam HTTPS. |
Endpoint |
Especifica o nome de domínio ou o endereço IP do servidor que carrega o ponto de extremidade do serviço REST. Obtenha o valor de de Regiões e pontos de extremidadeRegiões e pontos de extremidade. |
resource-path |
Caminho de acesso da API para executar uma operação especificada. Obtenha o valor do URI da 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. Nem todas as API têm um parâmetro de consulta. Certifique-se de que um ponto de interrogação (?) esteja incluído antes de um 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 partes de dados devem ser visualizadas. |
Para simplificar a exibição de URI, cada API é fornecida apenas com um resource-path e um método de solicitação. Isso ocorre porque o valor de URI-scheme de todas as API é HTTPS e os pontos de extremidade em uma região são os mesmos. Portanto, as duas partes são omitidas.
Métodos de solicitação
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. |
Por exemplo, no URI para obtenção de um token de usuário, o método de requisição é POST, e a requisição é a seguinte:
POST https://iam.ap-southeast-1.myhuaweicloud.com/v3/auth/tokens
Cabeçalho da solicitação
Você também pode adicionar campos adicionais a uma solicitação, como os campos exigidos por um URI especificado ou um método HTTP. Por exemplo, adicione Content-Type que define um tipo de corpo de solicitação para solicitar as informações de autenticação.
Nome |
Descrição |
Obrigatoriedade |
Exemplo |
---|---|---|---|
Host |
Especifica as informações do servidor solicitadas, que podem ser obtidas a partir do URL da API de serviço. O valor está no formato hostname[: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 Este parâmetro é obrigatório para a autenticação AK/SK. |
code.test.com ou code.test.com:443 |
Content-Type |
Especifica o Tipo do corpo da solicitação MIME. É 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 |
application/json |
Content-Length |
Especifica o comprimento do corpo da solicitação. A unidade é byte. |
Esse parâmetro é opcional para solicitações POST, mas deve ser deixado em branco para solicitações GET. |
3495 |
X-Project-Id |
Especifica a ID do projeto. Obtenha o ID do projeto seguindo as instruções em Obtenção de um ID de projeto. |
Não Esse parâmetro é obrigatório para solicitações que usam autenticação AK/SK no cenário DeC (Dedicated Cloud) ou cenário de vários projetos. |
e9993fc787d94b6c886cbaa340f9c0f4 |
X-Auth-Token |
Especifica o token do usuário. Depois que a solicitação é processada, o valor de X-Subject-Token no cabeçalho é o valor do token. |
Não Este parâmetro é obrigatório para autenticação baseada em token. |
O seguinte é parte de um exemplo de token: MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ |
Além de suportar a autenticação baseada em token, as APIs suportam a autenticação usando a chave de acesso ID/chave de acesso secreta (AK/SK). Durante a autenticação baseada em AK/SK, um SDK é usado para assinar a solicitação, os campos de cabeçalho Authorization (informações de assinatura) e X-Sdk-Date (hora em que a solicitação é enviada) são adicionados automaticamente à solicitação.
Para obter mais informações, consulte AK/SK-based Authentication em Autenticação.
A API para obter um token de usuário não requer autenticação. Portanto, essa API requer apenas a adição do campo Content-Type. A solicitação com o cabeçalho Content-Type adicionado é a seguinte:
POST https://iam.ap-southeast-1.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json
(Opcional)Corpo de solicitação
Esta parte é opcional. Um corpo de solicitação é geralmente enviado em um formato estruturado (por exemplo, JSON ou XML), correspondente ao Content-Type no cabeçalho da solicitação, e é 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 devem ser codificados em UTF-8.
O corpo da solicitação varia conforme as API. As certas API não exigem o corpo da solicitação, como as API 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 username, domianname, ******** (login senha) e xxxxxxxxxxxxxxxxxx (ID do projeto, por exemplo, ap-southeast-1) pelos valores reais. Para regiões e endpoints, consulte Regiões e pontos de extremidade.
scope especifica onde um token entra em vigor. No exemplo a seguir, o token terá efeito somente nos recursos especificados pelo código do projeto. Você pode definir o escopo para uma conta ou um projeto em uma conta. Para obter detalhes, 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": "username", "password": "********", "domain": { "name": "domianname" } } } }, "scope": { "project": { "name": "xxxxxxxxxxxxxxxxxx" } } } }
Se todos os dados exigidos por uma solicitação estiverem disponíveis, você poderá enviar a solicitação para chamar uma API por meio de curl, Postman ou coding. Para a API usada para obter um token de usuário, x-subject-token no cabeçalho de resposta é o token de usuário desejado. Em seguida, você pode usar o token para autenticar a chamada de outras API.