Совместимая версия Springdoc openapi ui с Spring 5.2.0.RELEASEJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Совместимая версия Springdoc openapi ui с Spring 5.2.0.RELEASE

Сообщение Anonymous »

Зависимости моего проекта здесь

Код: Выделить всё

1.2.17
UTF-8
1.8
1.8
true
false
1.8
1.8

5.2.0.RELEASE
5.2.0.RELEASE
2.2.0.RELEASE
3.9
1.11
1.2
1.7.25
1.2.3
4.12
5.4.6.Final
0.11.2
2.10.3
1.9.1
31.1-jre
2.8.0
6.0.10.Final
4.12
2.0.1.Final
1.2.3
4.0.2
3.2.2
4.5.7
3.2.1
Я хочу добавить эту зависимость

Код: Выделить всё

org.springdoc
springdoc-openapi-ui
1.7.0

Поскольку это весенний проект, я также добавил этот класс

Код: Выделить всё

    package com.hititcs.craneota.api.service.config;

import com.hititcs.crane.types.basictypes.ClientInformationType;
import com.hititcs.craneota.api.service.security.conversation.Conversation;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.media.Content;
import io.swagger.v3.oas.models.media.MediaType;
import io.swagger.v3.oas.models.media.Schema;
import io.swagger.v3.oas.models.responses.ApiResponse;
import io.swagger.v3.oas.models.responses.ApiResponses;
import javax.inject.Inject;
import org.springdoc.core.GroupedOpenApi;
import org.springdoc.core.SpringDocUtils;
import org.springdoc.core.customizers.OpenApiCustomiser;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestHeader;

@Configuration
public class OpenApiConfiguration {

@Inject
private Environment environment;

static {

// RequestHeader annotation'larını ignore et.
SpringDocUtils.getConfig().addAnnotationsToIgnore(RequestHeader.class);

// Conversation ve ClientInformationType parametrelerini ignore et
SpringDocUtils.getConfig().addRequestWrapperToIgnore(
Conversation.class, ClientInformationType.class
);

// Tüm enum sınıflarını reusable hale çevir
io.swagger.v3.core.jackson.ModelResolver.enumsAsRef = true;
}

@Bean
public OpenAPI customOpenAPI() {
return new OpenAPI()
.components(new Components())
.info(new Info()
.title("CraneOTA API Document")
.version(environment.getProperty("app.version",  "unknown")));
}

@Bean
public OpenApiCustomiser addCustomGlobalResponseHeader() {

Schema errorResponseSchema = new Schema();
errorResponseSchema.setName("ErrorResponse");
errorResponseSchema.set$ref("#/components/schemas/ErrorResponse");

return openApi -> {
openApi.getPaths().values().stream().flatMap(pathItem -> pathItem.readOperations().stream())
.forEach(operation -> {
ApiResponses apiResponses = operation.getResponses();
apiResponses.addApiResponse("400", createApiResponse("Bad Request", errorResponseSchema));
apiResponses.addApiResponse("403", createApiResponse("Forbidden", null));
apiResponses.addApiResponse("404", createApiResponse("Not Found", null));
apiResponses.addApiResponse("500", createApiResponse("Server Error", errorResponseSchema));

});

};
}

private ApiResponse createApiResponse(String message, Schema schema) {
MediaType mediaType = new MediaType();
mediaType.schema(schema);
return new ApiResponse().description(message)
.content(new Content().addMediaType(org.springframework.http.MediaType.APPLICATION_JSON_VALUE, mediaType));
}
}
и мой класс appInitializer также здесь

Код: Выделить всё

    package com.hititcs.craneota.api.service.config;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import org.jetbrains.annotations.NotNull;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

import javax.servlet.ServletRegistration;

public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{

@Override
protected Class[] getRootConfigClasses() {
return new Class[]{AppConfig.class};
}

@Override
protected Class[] getServletConfigClasses() {
return new Class[]{};
}

@NotNull
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}

@Override
protected void customizeRegistration(ServletRegistration.Dynamic registration) {
registration.setInitParameter("dispatchOptionsRequest", "true");
registration.setInitParameter("throwExceptionIfNoHandlerFound", "true");
super.customizeRegistration(registration);
}

@Override
public void onStartup(ServletContext container) throws ServletException {
super.onStartup(container);
AnnotationConfigWebApplicationContext ctx = getContext();
ctx.register(AppConfig.class);
ctx.setServletContext(container);

ServletRegistration.Dynamic servlet = container.addServlet("swaggerDispatcher", new DispatcherServlet(ctx));

servlet.setLoadOnStartup(1);
servlet.addMapping("/");
}

private AnnotationConfigWebApplicationContext getContext() {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.scan("rest");
context.register(OpenApiConfiguration.class, org.springdoc.webmvc.ui.SwaggerConfig.class,
org.springdoc.core.SwaggerUiConfigProperties.class, org.springdoc.core.SwaggerUiOAuthProperties.class,
org.springdoc.webmvc.core.SpringDocWebMvcConfiguration.class,
org.springdoc.webmvc.core.MultipleOpenApiSupportConfiguration.class,
org.springdoc.core.SpringDocConfiguration.class, org.springdoc.core.SpringDocConfigProperties.class,
org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration.class);

return context;
}
}
Когда я открываю ссылку http://localhost:8081/api/v3/api-docs, появляется сообщение: «Обработчик не найден для GET /api/v3/api-docs». Как я могу получить доступ к документу моего проекта из конечной точки? В соответствии с другими версиями зависимостей, какую версию Springdoc openapi мне следует использовать? Пожалуйста, подскажите мне дорогу.

Подробнее здесь: https://stackoverflow.com/questions/791 ... -0-release
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»