You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Serverless Framework实现GET接口请求校验(无需在Lambda内写校验)

Serverless Framework GET接口请求校验实现方案

核心思路是利用网关层的原生校验能力,在serverless.yml中配置校验规则,请求未通过校验时会被网关直接拦截,不会触发Lambda执行,无需在函数内部写校验逻辑。和POST场景校验请求体的逻辑一致,GET场景只需要把校验对象切换为查询参数或路径参数即可。

具体实现步骤

  • 第一步:确定卡片ID的传递方式,可选放在路径参数或查询参数中,在函数的http事件配置中开启参数校验开关
    示例配置(卡片ID放在查询参数场景):
functions:
  getCardData:
    handler: src/getCard.handler
    events:
      - http:
          path: /card/info
          method: get
          # 配置参数必填校验
          request:
            parameters:
              querystrings:
                cardId: true # true代表该参数为必填项
            # 绑定JSON Schema做格式校验
            schemas:
              application/json: ${file(./src/schemas/card-query.json)}

如果是把ID放在路径中,示例如下:

functions:
  getCardData:
    handler: src/getCard.handler
    events:
      - http:
          path: /card/info/{cardId}
          method: get
          request:
            parameters:
              paths:
                cardId: true
            schemas:
              application/json: ${file(./src/schemas/card-path.json)}
  • 第二步:编写对应JSON Schema校验文件,自定义参数格式规则
    比如要求cardId为UUID格式、禁止传额外参数的Schema示例:
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "cardId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
    }
  },
  "required": ["cardId"],
  "additionalProperties": false
}

你可以根据自己的业务规则修改校验逻辑,比如调整正则匹配卡片ID的规则、限制参数长度、添加数值范围校验等。

  • 第三步:正常部署即可,部署后API网关会自动生效校验规则,不符合要求的请求会直接返回400错误,不会调用Lambda函数。

注意事项

  • Serverless Framework v2及以上版本原生支持上述配置,不需要额外安装插件
  • 如果使用非AWS云厂商的Serverless服务,配置逻辑一致,只要在触发器配置中开启参数校验、绑定对应校验规则即可。

内容的提问来源于stack exchange,提问作者geek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 03:06:00