Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flask 未从API网关中的URL调用POST方法_Flask_Aws Lambda_Aws Api Gateway_Aws Serverless_Flask Restx - Fatal编程技术网

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

Flask 未从API网关中的URL调用POST方法,flask,aws-lambda,aws-api-gateway,aws-serverless,flask-restx,Flask,Aws Lambda,Aws Api Gateway,Aws Serverless,Flask Restx,我有一个基本的restx应用程序(main.py),如下所示: ns = Namespace( "greetings", description="Get Greetings." ) parser = reqparse.RequestParser() parser.add_argument("name", type=str, help="name") @ns.route('/restx/hello

我有一个基本的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 
从代码中可以看出,我正在调用路径上的
GET
POST
方法:
/greetings/restx/hello/
。我已经使用
Serverless
API网关
lambda
上部署了此代码

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网关
上,当我在仪表板上分别测试
GET
POST
方法时,它们会打印各自的输出

获取方法的屏幕截图

发布方法的屏幕截图

我有此服务的以下URL:

当我从浏览器中调用URL本身时:它总是调用
GET
方法,如下所示:

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 


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

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

对于
POST
方法,您可以在以下位置使用邮差工具:

或在终端上使用
curl

curl -X POST url