eclipse / microprofile-open-api

Microprofile open api
Apache License 2.0
131 stars 81 forks source link

How to configure Swagger-UI to display results as and when received asynchronously instead of waiting for the complete results? #549

Open Aravinda93 opened 1 year ago

Aravinda93 commented 1 year ago

I am developing a Rest-API service using Quarkus and for this, I have added OpenAPI (org.eclipse.microprofile.openapi) annotations to generate Swagger-UI. My response can consist of large amounts of data, so I have used the Multi (from SmallRye Mutiny) so as to return the response asynchronously during execution.

Everything works perfectly when a small set of data is returned to Swagger-UI, The problem arises when a large set of data is returned to Swagger-UI then I believe the Swagger-UI waits for the complete response and the browser stops responding and crashes.

However, when I make a request to the same API endpoint using the cURL command, I see that Mutiny Multi is working perfectly and returning the response asynchronously and displaying it on the command line, so nothing breaks in cURL command and everything works perfectly here, even for very large sets of returned data.

Is there something that I can do so as to avoid the crashing of Swagger-UI, like some additional open-api annotation or some custom classes, so as to avoid the Swagger-UI waiting and displaying the results as and when they are received?

Updated things I have tried the following based on other answers:

  1. I found that some answers have mentioned disabling the syntaxHighlight so I tried the same by adding the following lines in my application.yml but it is still not working and swagger-ui hangs:
    quarkus:
    swagger-ui:
    always-include: true
    syntaxHighlight:
      activated: false
    http:
    cors: true
    port: 8080
MikeEdgar commented 1 year ago

Hi @Aravinda93 , have you checked with the Swagger-UI project on how to deal with large responses? They may be able to help. I suspect it can't be solved with changes to the API definition.