如何解决Lambda事件querystring参数是否未定义?需要配置什么?
嗨,我有一个GET请求的Lambda ApiGateway端点。 我正在使用带有querystring参数的GET请求,它看起来像这样:
这是我从客户打来的电话:
SearchEvents(term: string): Observable<Event[]> {
const query = `term=${term}`;
const options = {
params: new HttpParams({
fromString: query
})
};
let url = this.SERVICE_URL + 'event/search';
console.log('search url',url);
return this.http.get<Event[]>(url,options)
.pipe(map((val) => val.map((i) => new Event(i))));
}
每当我调用此端点时,都无法从事件中获取查询字符串参数。
这是处理程序:
export const SearchEvents: APIGatewayProxyHandler = async (event,_context) => {
try {
console.log('event',event);
let parameters = event.queryStringParameters;
console.log('queryString',parameters);
if (parameters && parameters.hasOwnProperty('term')) {
let eventService = new EventService(
process.env.REGION,process.env.STAGE
);
let res = await eventService.SearchEvents(parameters.term);
if (res.isError()) {
return ApiGatewayResponseService.Error(res.error);
}
return ApiGatewayResponseService.Success(res.data);
} else {
return ApiGatewayResponseService.BadRequest('Missing search term');
}
} catch (e) {
console.error(e);
return ApiGatewayResponseService.Error(e);
}
};
我正在使用Serverless Framework进行部署,并且该功能已设置:
SearchEvents:
handler: src/event-handlers/EventController.SearchEvents
events:
- http:
method: get
path: /event/search
request:
parameters:
querystrings:
term: true
无论如何,对于Lambda的已部署版本,我无法从事件中获取QueryString参数,但是当我使用serverless-offline在本地运行服务时,我可以获取它们
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。