У меня есть несколько микросервисов за приложением весенней загрузки, встраивающим zuul, назовем его « gateway ».
Вот мой конфигурационный файл:
zuul:
prefix: /api
routes:
api-login:
path: /login/**
url: http://localhost:8070/the-login/
api-other:
...
Я хочучтобы показать документацию для каждой моей службы в моем приложении шлюза, поэтому я создал следующее:
@Component
@Primary
@EnableAutoConfiguration
public class SwaggerDocumentationController implements SwaggerResourcesProvider{
@Override
public List<SwaggerResource> get() {
List<SwaggerResource> resources = new ArrayList<SwaggerResource>();
resources.add(swaggerResource("login-service", "/api/login/api-docs", "2.0"));
...
return resources;
}
private SwaggerResource swaggerResource(String name, String location, String version) {
SwaggerResource swaggerResource = new SwaggerResource();
swaggerResource.setName(name);
swaggerResource.setLocation(location);
swaggerResource.setSwaggerVersion(version);
return swaggerResource;
}
}
Это работает довольно хорошо: каждый раз, когда пользователь переходит на / gateway / api / login он перенаправляется на мой микросервис, поэтому на / the-login / .Кроме того, когда пользователь заходит на /gateway/login/swagger-ui.html, он может видеть документацию.
Проблема заключается в том, что когда пользователь пробует API со страницы документации пользовательского интерфейса swagger, он получает:
{
"timestamp": "2018-05-12T15:35:38.840+0000",
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/the-login/the-login/LoginTest"
}
Как видите, zuul добавил еще один логин к пути!Это ошибка чванства или я что-то не так делаю?