API de calculadora sencilla en API Gateway - Amazon API Gateway

API de calculadora sencilla en API Gateway

Nuestra API de calculadora sencilla expone tres métodos (GET, POST, GET) para invocar Función de Lambda de calculadora sencilla. A continuación, se muestra una representación gráfica de esta API:

API de calculadora sencilla del SDK generado

Estos tres métodos muestran diferentes formas de proporcionar la entrada para la función de Lambda del backend con el objetivo de realizar la misma operación:

  • El método GET /?a=...&b=...&op=... utiliza los parámetros de consulta para especificar la entrada.

  • El método POST / utiliza una carga JSON {"a":"Number", "b":"Number", "op":"string"} para especificar la entrada.

  • El método GET /{a}/{b}/{op} utiliza los parámetros de ruta para especificar la entrada.

Si no se define, API Gateway genera el nombre del método del SDK correspondiente combinando las partes de la ruta de acceso y el método HTTP. La parte de la ruta raíz (/) se denomina Api Root. Por ejemplo, el nombre predeterminado del SDK de Java para el método GET /?a=...&b=...&op=... de la API es getABOp, el del método POST / es postApiRoot y el del método GET /{a}/{b}/{op} es getABOp. Cada SDK puede personalizar la convención. Consulte en la documentación del código fuente del SDK generado los nombres de los métodos específicos del SDK.

Puede y debe anular los nombres de método del SDK predeterminados especificando la propiedad operationName en cada método de la API. Puede hacerlo al crear el método de la API o al actualizar el método de la API con la API de REST de API Gateway. En la definición de Swagger de la API, puede definir operationId para conseguir el mismo resultado.

Antes de mostrar cómo llamar a estos métodos con un SDK generado por API Gateway para esta API, vamos a recordar brevemente cómo se configuran. Para obtener instrucciones detalladas, consulte Desarrollo de las API de REST en API Gateway. Si es nuevo en API Gateway, consulte Elección de un tutorial de integración de AWS Lambda primero.

Crear modelos para la entrada y la salida

Para especificar una entrada con establecimiento inflexible de tipos en el SDK, creamos un modelo Input para la API. Para describir el tipo de datos del cuerpo de la respuesta, creamos un modelo Output y un modelo Result.

Para crear modelos para la entrada, la salida y el resultado
  1. En el panel de navegación principal, elija Modelos.

  2. Seleccione Crear modelo.

  3. En Nombre, escriba input.

  4. En Tipo de contenido, ingrese application/json.

    Si no se encuentra ningún tipo de contenido coincidente, no se realiza la validación de la solicitud. Para utilizar el mismo modelo independientemente del tipo de contenido, introduzca $default.

  5. En Esquema del modelo, escriba el siguiente modelo:

    { "$schema" : "$schema": "http://json-schema.org/draft-04/schema#", "type":"object", "properties":{ "a":{"type":"number"}, "b":{"type":"number"}, "op":{"type":"string"} }, "title":"Input" }
  6. Seleccione Crear modelo.

  7. Repita los pasos siguientes para crear un modelo Output y un modelo Result.

    Para el modelo Output, escriba lo siguiente en Esquema del modelo:

    { "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "properties": { "c": {"type":"number"} }, "title": "Output" }

    Para el modelo Result, escriba lo siguiente en Esquema del modelo. Sustituya el ID abc123 de la API por su ID de API.

    { "$schema": "http://json-schema.org/draft-04/schema#", "type":"object", "properties":{ "input":{ "$ref":"https://apigateway.amazonaws.com/restapis/abc123/models/Input" }, "output":{ "$ref":"https://apigateway.amazonaws.com/restapis/abc123/models/Output" } }, "title":"Result" }

Configurar parámetros de consulta del método GET /

Para el método GET /?a=..&b=..&op=.., los parámetros de consulta se declaran en Method Request (Solicitud de método):

Para configurar los parámetros de la cadena de consulta GET/URL
  1. En la sección Solicitud de método del método GET del recurso raíz (/), seleccione Editar.

  2. Elija Parámetros de cadenas de consulta de URL y haga lo siguiente:

    1. Elija Add query string (Añadir cadena de consulta).

    2. En Nombre, escriba a.

    3. Mantenga desactivados Obligatorio y Almacenamiento en caché.

    4. Mantenga Almacenamiento en caché desactivado.

    Repita los mismos pasos y cree una cadena de consulta llamada b y una cadena de consulta llamada op.

  3. Seleccione Guardar.

Configuración del modelo de datos de la carga como entrada del backend

Para el método POST /, creamos el modelo Input y lo añadimos a la solicitud de método para definir la forma de los datos de entrada.

Para configurar el modelo de datos de la carga como entrada del backend
  1. En la sección Solicitud de método del método POST del recurso raíz (/), seleccione Editar.

  2. Elija Cuerpo de la solicitud.

  3. Elija Add model (Añadir modelo).

  4. En Tipo de contenido, ingrese application/json.

  5. En Modelo, seleccione Entrada.

  6. Seleccione Guardar.

Con este modelo, los clientes de la API pueden llamar al SDK para especificar la entrada creando una instancia del objeto Input. Sin este modelo, los clientes tendrán que crear un objeto de diccionario que represente la entrada JSON de la función de Lambda.

Configuración del modelo de datos de la salida del resultado desde el backend

Para los tres métodos, creamos el modelo Result y lo agregamos al elemento Method Response del método para definir la forma de la salida devuelta por la función de Lambda.

Para configurar el modelo de datos de la salida del resultado desde el backend
  1. Seleccione el recurso /{a}/{b}/{op} y, a continuación, elija el método GET.

  2. En la pestaña Respuesta del método, en Respuesta 200, elija Editar.

  3. En Cuerpo de la respuesta, seleccione Agregar modelo.

  4. En Tipo de contenido, ingrese application/json.

  5. En Modelo, seleccione Resultado.

  6. Seleccione Guardar.

Con este modelo, los clientes de la API pueden analizar la salida leyendo las propiedades de un objeto Result. Sin este modelo, los clientes tendrían que crear un objeto de diccionario que representara la salida JSON.