Solicitud
Esta sección describe la estructura de una solicitud de API de REST y usa la API de IAM para obtener un token de usuario como ejemplo para demostrar cómo invocar a una API. El token obtenido se puede usar luego para autenticar la invocación de otras API.
URI de solicitud
Un URI de solicitud tiene el siguiente formato:
{URI-scheme}://{Endpoint}/{resource-path}?{query-string}
Aunque se incluye un URI de solicitud en la cabecera de solicitud, la mayoría de los lenguajes de programación o marcos requieren que el URI de solicitud se transmita por separado.
Parámetro |
Descripción |
---|---|
URI-scheme |
Protocolo utilizado para transmitir solicitudes. Todas las API usan HTTPS. |
Endpoint |
Nombre de dominio o dirección IP del servidor que lleva el servicio de REST. El punto de conexión varía entre los servicios en las diferentes regiones. Por ejemplo, el punto de conexión de IAM en la región CN North-Beijing4 es iam.cn-north-4.myhuaweicloud.com. |
resource-path |
Ruta de recursos de una API. Obtenga la ruta de acceso desde el URI de una API. Por ejemplo, el resource-path de la API para obtener un token de usuario es /v3/auth/tokens. |
query-string |
(Opcional) Parámetro de consulta. Asegúrese de que se incluye un signo de interrogación (?) delante de cada parámetro de consulta, que tiene el formato de Parámetro name=Parámetro value. Por ejemplo, ?limit=10 indica que se puede consultar un máximo de 10 registros de datos. |
Por ejemplo, para obtener un testigo de IAM en la región CN North-Beijing4, obtenga el punto de conexión de IAM (iam.cn-north-4.myhuaweicloud.com) en esta región y la resource-path (/v3/auth/tokens) en el URI de la API usada para obtener un token de usuario. A continuación, construya el URI de la siguiente manera:
https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens
Para simplificar la visualización del URI, este documento proporciona solo resource-path y el método de solicitud en el URI de cada API. El URI-scheme de todas las API es https y los puntos de conexión en una región son los mismos.
Métodos de solicitud
El protocolo de HTTP define los siguientes métodos de solicitud para enviar solicitudes a un servidor.
Método |
Descripción |
---|---|
GET |
Solicita a un servidor que devuelva los recursos especificados. |
PUT |
Solicita a un servidor que actualice los recursos especificados. |
POST |
Solicita a un servidor que agregue recursos o realice operaciones especiales. |
DELETE |
Solicita a un servidor que elimine un recurso especificado (por ejemplo, un objeto). |
HEAD |
Solicita los encabezados de recursos de un servidor. |
PATCH |
Solicita a un servidor que actualice una parte de los recursos especificados. Si el recurso solicitado no existe, el servidor puede crear un recurso utilizando el método PATCH. |
POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens
Encabezado de solicitud
Puede agregar los campos adicionales, como los campos requeridos por un método URI o HTTP especificado, a un encabezado de solicitud. Por ejemplo, para solicitar información de autenticación, puede agregar Content-Type para especificar el tipo del cuerpo de la solicitud.
Para obtener más información sobre los encabezados de solicitud comunes, consulte Tabla 3.
Parámetro |
Descripción |
Obligatorio |
Ejemplo |
---|---|---|---|
Host |
Especifica el servidor al que se envía una solicitud, que se puede obtener del URL de la API de servicio. El valor tiene el formato de Host name:Port number. Si no se especifica el número de puerto, se usa el puerto predeterminado. El número de puerto predeterminado para https es 443. |
No Este campo es obligatorio para la autenticación de clave de acceso (AK)/clave de acceso secreta (SK). |
code.test.com o code.test.com:443 |
Content-Type |
Especifica el tipo (o formato) del cuerpo de un mensaje. Se recomienda el valor predeterminado application/json. Otros valores se describirán en las API específicas. |
Sí |
application/json |
Content-Length |
Especifica la longitud del cuerpo de una solicitud, en bytes. |
No |
3495 |
X-Project-Id |
Especifica un ID de proyecto. Puede obtener el ID del proyecto haciendo referencia a Obtención del ID del proyecto. |
No Este campo es obligatorio para las solicitudes que usan la autenticación de AK/SK en los escenarios de Dedicated Cloud (DeC) o de multiproyecto. |
e9993fc7************baa340f9c0f4 |
X-Auth-Token |
Especifica un token de usuario. Un token de usuario se transporta en una respuesta a la API para obtener un token de usuario. Esta API es la única que no requiere autenticación. El valor de X-Subject-Token en la cabecera de respuesta es el token. |
No Este campo es obligatorio para la autenticación de token. |
Lo siguiente es una parte de un ejemplo del token: MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ |
Las API también admiten la autenticación AK/SK, que utiliza los SDK para firmar una solicitud. Durante la firma, los encabezados Authorization (autenticación de firma) y X-Sdk-Date (hora en que se envía una solicitud) se agregan automáticamente a la solicitud.
Para obtener más información sobre la autenticación AK/SK, consulte la Autenticación.
POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokensContent-Type:application/json
Cuerpo de solicitud
Esta parte es opcional. Un cuerpo de solicitud se envía generalmente en un formato estructurado (por ejemplo, JSON o XML), que es especificado por Content-Type en el encabezado de solicitud. Se utiliza para transferir el contenido que no sea el encabezado de solicitud. Si el cuerpo de la solicitud contiene caracteres de ancho completo, estos caracteres deben estar codificados en UTF-8.
Los cuerpos de solicitud varían según las API. Algunas API no requieren un cuerpo de solicitud, como las API invocadas con los métodos GET y DELETE.
Para la API utilizada para obtener un token de usuario, puede obtener los parámetros de solicitud y la descripción de parámetros de la solicitud de API. A continuación se proporciona un ejemplo de solicitud con un cuerpo incluido. Reemplace username, domainname, ******** (contraseña de inicio de sesión) y xxxxxxxxxxxxxxxxxx (nombre del proyecto, por ejemplo, cn-north-1) por los valores reales.
El campo scope especifica dónde tiene efecto un token. Puede establecer scope para una cuenta o un proyecto en una cuenta. En el siguiente ejemplo, el token solo tiene efecto en un proyecto especificado. Para obtener más información, consulte Obtención de un token de usuario.
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" } } } } |
Si todos los datos requeridos por una solicitud de API están disponibles, puede enviar la solicitud para invocar a la API a través de curl, Postman o coding. En la respuesta a la API para obtener un token de usuario, x-subject-token lleva un token de usuario. Puede usar este token para autenticar la invocación a otras API.