Flask 未从API网关中的URL调用POST方法
我有一个基本的restx应用程序(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
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