Lo he intentado y buscado en línea, pero no pude encontrar una respuesta. ¿Es posible lograr lo siguiente usando Serverless Framework:
Quiero usar get.handler que tiene el código de la siguiente definición tanto para obtener un elemento como para obtener todos los elementos. Asi que:
api.example.com/items/ recupero todos los elementosapi.example.com/items/1234 , recupero el elemento con id = 1234 - get_items: handler: project/items/get.handler events: - http: path: items/{itemId} method: get Hasta ahora , en get.handler compruebo event.pathParameters? event.pathParameters.itemId : null si el elemento específico existe y llama a alguna getItem(itemdId) y si no sale, llamo a una función getAll() .
Si paso la identificación del elemento en la ruta, funciona, pero cuando hago una solicitud para api.example.com/items/ el siguiente error: not a valid key=value pair (missing equal-sign) in Authorization header . Esto significa que algo está mal en mi ruta y tengo que pasar la identificación del elemento a los parámetros de la ruta.
Mi pregunta es: ¿hay alguna manera de que pueda usar múltiples rutas en el área - http: o cuál sería una forma recomendada de resolver este problema (simplemente cree dos controladores separados)?
Hay dos formas de lograr fácilmente lo que estás buscando. En primer lugar, una función lambda puede ser activada por múltiples eventos. Puede agregar otro evento http a la matriz de controladores de la siguiente manera:
get_items: handler: project/items/get.handler events: - http: path: items/{itemId} method: get - http: path: items/ method: get Alternativamente, podría usar el argumento {proxy+} . Puede leer más sobre los diversos métodos de proxy aquí