sls-flask icon indicating copy to clipboard operation
sls-flask copied to clipboard

swagger UI send request to endpoint without stage and return 403

Open kingkenmark opened this issue 5 years ago • 1 comments

I managed to create and deploy an application to AWS via this sls-flask service, but the swagger generated doesn't work, after enable the developer tools on Chrome, I found click the execute on swagger, it sends the request to an endpoint with stage, for example:

After "sls deploy -s dev", the output will contain the endpoint which looks like: https://xxxxxx.execute-api.ap-southeast-2.amazonaws.com/dev

And the swagger page can be accessed via: https://xxxxxx.execute-api.ap-southeast-2.amazonaws.com/dev/api/swagger

But when click the "execute" for api "/api/auth/login", the request will be sent to: https://xxxxxx.execute-api.ap-southeast-2.amazonaws.com/api/auth/login and it return "403" {"message":"Forbidden"}

If the request is sent to https://xxxxxx.execute-api.ap-southeast-2.amazonaws.com/dev/api/auth/login, it works.

If I change the Blueprint "url_prefix="/api/auth" to "url_prefix="/dev/api/auth", it still doesn't work since now the correct endpoint should be https://xxxxxx.execute-api.ap-southeast-2.amazonaws.com/dev/dev/api/auth/login.

It looks like when sls-flask generate the swagger, it ignores the stage.

kingkenmark avatar Jan 02 '20 09:01 kingkenmark

The cause of this: https://github.com/jmcarp/flask-apispec/issues/124 PR: https://github.com/jmcarp/flask-apispec/pull/125

revmischa avatar Feb 13 '20 13:02 revmischa