Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2023-04-04 GMT+08:00

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.

Tabla 1 Parámetros en un URI

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
Figura 1 Ejemplo de URI

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.

Tabla 2 Métodos de HTTP

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.

Por ejemplo, en el URI usado para obtener un token de usuario, el método de solicitud es POST. La solicitud es la siguiente:
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.

Tabla 3 Campos comunes en encabezados de solicitud

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.

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.

La API para obtener un token de usuario no requiere la autenticación. Como tal, solo es necesario agregar el campo Content-Type a las solicitudes para invocar a esta API. Un ejemplo de tales solicitudes es el siguiente:
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.