Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

swagger-ui-py >="21.9.28" adds the "/api/doc/" on every URL of an api call #33

Open
tropxy opened this issue Nov 28, 2021 · 6 comments
Open

Comments

@tropxy
Copy link

tropxy commented Nov 28, 2021

Hi, first let me thank your for coming up with this lib ;)

And before coming to the issue, here are my env settings:

python = 3.9
quart = "0.16.1"
quart-cors = "0.5.0"
swagger-ui-py = "21.9.28"
quart-openapi = "1.7.2"

I am generating the swager.json using quart-openapi and here is how my code looks like:

from quart import request, abort, jsonify
from quart_cors import cors
from quart_openapi import Pint, Resource
from swagger_ui import quart_api_doc

app = Pint(__name__, no_openapi=True)
app = cors(app, allow_origin="*")

@app.route("/api/doc/swagger.json")
async def openapi():
    return jsonify(app.__schema__)

quart_api_doc(
    app,
    config_url="http://localhost:8080/api/doc/swagger.json",
    url_prefix="/api/doc/",
    title="API doc",
    editor=True
)

@app.route("/sites")
class SitesInfoRequest(Resource):
    async def get(self):
        response = await get_all_sites_info()
        return jsonify(response), 200

....

when I run the project, locally, and access the url : http://localhost:8080/api/doc/, the page is generated correctly, with all the endpoints I created. The problem is, once I try out one of the endpoints, the URL that the page tries to hit is incorrect.

Instead of trying http://localhost:8080/sitesit is trying http://localhost:8080/api/doc/swagger.json/sites and I cant figure out what settings shall modify to make it work again.

[EDIT]
I did a bit of a research and found out that the problem only occurs from version 21.9.27.post1 on; on versions 21.9.27 and below, it still works as expected. I hope this helps finding the issue...

Thanks!

@tropxy tropxy changed the title swagger-ui-py =="21.10.15" and quart_open_api="1.7.2" seem to not be compatible swagger-ui-py >="21.9.28" adds a bug on when doing an api call Nov 28, 2021
@tropxy tropxy changed the title swagger-ui-py >="21.9.28" adds a bug on when doing an api call swagger-ui-py >="21.9.28" adds the "/api/doc/" on every URL of an api call Nov 28, 2021
@PWZER
Copy link
Owner

PWZER commented Nov 29, 2021

@tropxy Can you try this?

  • Remove openapi function
  • Update quart_api_doc like
    quart_api_doc(
        app,
        config=app.__schema__,
        url_prefix="/api/doc/",
        title="API doc",
        editor=True
    )

@tropxy
Copy link
Author

tropxy commented Jan 20, 2022

Sorry, I havent realized you answered me... I will try soon your suggestion, thank you!

@tropxy
Copy link
Author

tropxy commented Jan 20, 2022

I tried your suggestion and didnt work:
Bildschirmfoto 2022-01-20 um 15 53 01

@tropxy
Copy link
Author

tropxy commented Jan 31, 2023

Hi, any updates on this?

@PWZER
Copy link
Owner

PWZER commented Jan 31, 2023

Hi, any updates on this?

@tropxy Do you have a demo to reproduce the problem?

@PWZER
Copy link
Owner

PWZER commented Jan 31, 2023

@tropxy You should write it like this

@app.route("/api/doc/swagger.json")
async def openapi():
    config = app.__schema__
    for server in config.get('servers', []):
        server['url'] = 'http://localhost:8080'
    return jsonify(config)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants