首页 > 解决方案 > Lambda 事件查询字符串参数未定义?需要配置什么?

问题描述

您好,我有用于 GET 请求的 Lambda ApiGateway 端点。我正在使用查询字符串参数发出 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);
  }
};

我正在使用无服务器框架进行部署,并且该功能设置为:

SearchEvents:
handler: src/event-handlers/EventController.SearchEvents
events:
- http:
    method: get
    path: /event/search
    request:
      parameters:
        querystrings:
          term: true

无论如何,对于已部署的 Lambda 版本,我无法从事件中获取 QueryString 参数,但是当我使用 serverless-offline 在本地运行我的服务时,我可以获取它们

标签: lambdaquery-stringserverless-framework

解决方案


推荐阅读