POST 方法未从 API 网关中的 URL 调用

POST method not being invoked from the URL in API Gateway

我有一个基本的 flask-restx 应用程序 (main.py),如下所示:

ns = Namespace(
    "greetings",
    description="Get Greetings."
)
parser = reqparse.RequestParser()
parser.add_argument("name", type=str, help="name")


@ns.route('/restx/hello/')
class restx_hello(Resource):
    @ns.expect(parser, validate=True)
    def get(self):
        args = parser.parse_args()
        name = args['name']
        g = 'Greetings to you!'
        return 'Hello ' + name + '! I am from restx. ' + g

    @ns.expect(parser, validate=True)
    def post(self):
        args = parser.parse_args()
        name = args['name']
        return 'This is the POST method, ' + name 

从代码中可以看出,我在路由 /greetings/restx/hello/ 上同时调用了 GETPOST 方法。我已经使用 Serverless.

API Gatewaylambda 上部署了这段代码

serverless.yml 文件:

service: flask-api

provider:
  name: aws
  runtime: python3.7

functions:
  app:
    handler: wsgi_handler.handler
    events:
      - http: ANY /
      - http: 'ANY {proxy+}'

custom:
  wsgi:
    app: app.app
    pythonBin: python3
    packRequirements: false
  pythonRequirements:
    dockerizePip: non-linux

plugins:
  - serverless-wsgi
  - serverless-python-requirements

API Gateway 上,当我从仪表板单独测试 GETPOST 方法时,它们会打印各自的输出。

GET 方法的屏幕截图

POST 方法的屏幕截图

我有以下 URL 服务:https://abcdefgh.execute-api.eu-central-1.amazonaws.com/dev/{proxy+}.

当我从浏览器调用 URL 本身时:https://abcdefgh.execute-api.eu-central-1.amazonaws.com/dev/greetings/restx/hello/?name=Alex 它总是调用 GET 方法,如下所示:

POST 方法从未被调用。我做错了什么?

在浏览器上,它总是使用 GET 方法。

对于POST方法,您可以使用POSTMAN工具:https://www.postman.com

或在终端上使用curl

curl -X POST url