springdoc / springdoc-openapi

Library for OpenAPI 3 with spring-boot
https://springdoc.org
Apache License 2.0
3.28k stars 495 forks source link

`swagger-ui.html` is not found - HTTP404 #402

Closed vilmosnagy closed 4 years ago

vilmosnagy commented 4 years ago

TLDR: this is the duplicate of the issue #361, but:

Describe the bug I do run spring-boot 2.2.2-RELEASE with springdoc-openapi-webflux-ui 1.2.29.

The following requests give me the following statuses:

[vilmosnagy@vnagy-dell hkir-trip-planner]$ curl -sD - http://localhost:8080/v3/api-docs/swagger-config  && echo 
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 119

{"configUrl":"/v3/api-docs/swagger-config","oauth2RedirectUrl":"/swagger-ui/oauth2-redirect.html","url":"/v3/api-docs"}
[vilmosnagy@vnagy-dell hkir-trip-planner]$ curl -sD - http://localhost:8080/v3/api-docs   && echo 
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 719

{"openapi":"3.0.1","info":{"title":"OpenAPI definition","version":"v0"},"servers":[{"url":"http://localhost:8080","description":"Generated server url"}],"paths":{"/v1/test":{"post":{"tags":["example-controller"],"operationId":"getPlanForParameter","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExampleRequest"}}}},"responses":{"200":{"description":"default response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExampleResponse"}}}}}}}},"components":{"schemas":{"ExampleRequest":{"type":"object","properties":{"id":{"type":"string"}}},"ExampleResponse":{"type":"object","properties":{"id":{"type":"string"},"count":{"type":"integer","format":"int32"}}}}}}
[vilmosnagy@vnagy-dell hkir-trip-planner]$ curl -sD - http://localhost:8080/swagger-ui.html  && echo 
HTTP/1.1 307 Temporary Redirect
Location: /webjars/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config
content-length: 0

[vilmosnagy@vnagy-dell hkir-trip-planner]$ curl -sD - http://localhost:8080/webjars/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config  && echo 
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 155

{"timestamp":1580836491212,"path":"/webjars/swagger-ui/index.html","status":404,"error":"Not Found","message":"No matching handler","requestId":"ed2cc66d"}
[vilmosnagy@vnagy-dell hkir-trip-planner]$ 

(TLDR: it's the same as in the mentioned issue, the swagger-ui.html redirects me somewhere, and that page does not load)

To Reproduce Steps to reproduce the behavior:

Expected behavior

Screenshots Nothing extraordinary, the standard Spirng-Boot error page. image

Additional context My problem is the same as in #361, but I was able to create an MVCE.

bnasslahsen commented 4 years ago

Hi @vilmosnagy,

As stated in the Spring Boot reference documentation, when you use @EnableWebFlux, you tell Spring Boot that you wish to take full control over the WebFlux configuration and disable all auto-configuration for this (including static resources):

@Configuration
public class WebConfig  implements WebFluxConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations(CLASSPATH_RESOURCE_LOCATION+"/webjars/")
                .resourceChain(true)
                .addResolver(new WebJarsResourceResolver());
    }
}
vilmosnagy commented 4 years ago

Thanks for the quick reply.

kanai0618 commented 3 years ago

Hi @bnasslahsen , i used @Configuration public class WebConfig implements WebFluxConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/webjars/") .addResourceLocations(CLASSPATH_RESOURCE_LOCATION+"/webjars/") .resourceChain(true) .addResolver(new WebJarsResourceResolver()); } } still i am getting 404. and in my spring boot , in pattern o.s.c.g.h.p.RoutePredicateFactory : Pattern**, it doesnot find any swagger path. can you help ?

bnasslahsen commented 3 years ago

@kanai0618,

I don't know the context of your question, which is not clear and the code is not even formatted. Unfortunately, i cannot help you without any relevant information.

Please follow the contribution guidelines. You have guidance and demos for spring-weblfux. And if you are not able to make it, please help us speed up problem diagnosis by providing as much information as described in the guidelines.

kanai0618 commented 3 years ago

Hi @bnasslahsen , sorry for the typing issue.

So i am using spring cloud gateway in my code. and i have included

  <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-webflux-ui</artifactId>
            <version>1.5.2</version>
        </dependency>

and i am able to load this

http://localhost:8080/webjars/swagger-ui/index.html - ( by default https://petstore.swagger.io/v2/swagger.json)

but when i actually try to load my swagger endpoint (v3/api-docs), it gives me error. ( http://localhost:8080/v3/api-docs) 404. not found. image

hope you understand the issue.

bnasslahsen commented 3 years ago

@kanai0618,

You have here a fully working sample of spring cloud gateway. You can see the Piotrminkowski Blog for detailed instructions

And if you are still struggling, please make sure you Provide a Minimal, Reproducible Example - with HelloController that reproduces the problem