当前位置: 首页 > 知识库问答 >
问题:

SpringFox和Swagger UI-如何记录/loginendpoint

常睿范
2023-03-14

我已经将SpringFox依赖项添加到我的Spring Boot项目中,当我打开swagger-ui.html页面时,我可以看到我自己创建的RestControllers的文档,我确实看到了以下文档:

  • 基本错误控制器
  • 默认值
    null

如何向default/loginendpoint添加文档?

共有1个答案

胡高寒
2023-03-14

尝试配置这样的类来个性化您的登录。

package application.swagger;

import application.user.dto.UserLoginDTO;
import com.fasterxml.classmate.TypeResolver;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Component;
import springfox.documentation.builders.OperationBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.ResponseMessageBuilder;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiDescription;
import springfox.documentation.service.ResponseMessage;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.ApiListingScannerPlugin;
import springfox.documentation.spi.service.contexts.DocumentationContext;
import springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator;
import springfox.documentation.swagger.common.SwaggerPluginSupport;

import java.util.*;

@Component
@Order(SwaggerPluginSupport.SWAGGER_PLUGIN_ORDER)
@Slf4j
public class SwaggerLoginListingScanner implements ApiListingScannerPlugin {

    // tag::api-listing-plugin[]
    private final CachingOperationNameGenerator operationNames;

    /**
     * @param operationNames - CachingOperationNameGenerator is a component bean
     *                       that is available to be autowired
     */
    public SwaggerLoginListingScanner(CachingOperationNameGenerator operationNames) {//<9>
        this.operationNames = operationNames;
    }

    @Override
    public List<ApiDescription> apply(DocumentationContext context) {
        return new ArrayList<>(
                Arrays.asList(
                        new ApiDescription(null, "/api/login", "login", Collections.singletonList(
                                new OperationBuilder(operationNames)
                                        .summary("login")
                                        .tags(Set.of("jwt-authentication-filter"))
                                        .authorizations(new ArrayList<>())
                                        .position(1)
                                        .codegenMethodNameStem("loginPost")
                                        .method(HttpMethod.POST)
                                        .notes("This is a login method")
                                        .parameters(
                                                Arrays.asList(
                                                        new ParameterBuilder()
                                                                .description("Login Parameter")
                                                                .type(new TypeResolver().resolve(UserLoginDTO.class))
                                                                .name("userLogin")
                                                                .parameterType("body")
                                                                .parameterAccess("access")
                                                                .required(true)
                                                                .modelRef(new ModelRef("UserLoginDTO"))
                                                                .build()
                                                )
                                        ).responseMessages(responseMessages())
                                        .responseModel(new ModelRef(("UserToken")))
                                        .build()
                        ), false)));
    }

    /**
     * @return Set of response messages that overide the default/global response messages
     */
    private Set<ResponseMessage> responseMessages() { //<8>
        return Set.of(new ResponseMessageBuilder()
                        .code(200)
                        .responseModel(new ModelRef("UserToken"))
                        .build(), new ResponseMessageBuilder()
                        .code(401)
                        .responseModel(new ModelRef("ApiError"))
                        .build(),
                new ResponseMessageBuilder()
                        .code(403)
                        .responseModel(new ModelRef("ApiError"))
                        .build(),
                new ResponseMessageBuilder()
                        .code(404)
                        .responseModel(new ModelRef("ApiError"))
                        .build()
        );
    }
    // tag::api-listing-plugin[]

    @Override
    public boolean supports(DocumentationType delimiter) {
        return DocumentationType.SWAGGER_2.equals(delimiter);
    }
}
 类似资料:
  • 有没有办法可以从springfox swagger-UI中删除“basic-error-controller”? 图片:

  • SwaggerUI 汉化版;修改了部分样式;结合SpringFox SpringFox-Swagger-UI实现API管理

  • 我使用的是swagger版本2.2.2。如果我转到地址http://localhost:8080/swagger-ui.html,我将直接获得swagger UI。有没有办法,一个安全层可以增加,像,用户应该提示输入用户id和密码之前,大摇大摆的UI显示?

  • 我在我的机器上运行一个本地HTTP代理服务器并执行一些日志记录。我还想记录SSL流量。为此,我运行了另一个用Python编写的代理服务器,它作为SSL服务器,使用我的自签名证书,HTTP服务器forwads将请求连接到该服务器。SSL代理用于SSL处理“SSL”标准Python模块。此SSL代理应将SSL流量转发到目标web服务器。 HTTP代理成功转发来自浏览器的CONNECT请求,浏览器与SS

  • 我将事件发送到AWS Kinesis,这些事件由AWS lambda函数处理。但是,如果lambda抛出一些错误,则不会丢弃记录,并且会一次又一次地进行处理,从而阻止处理新记录。 我宁愿跳过错误的记录,消化新的记录。我不知道该怎么做。 lambda函数捕获任何异常,因此不应给出任何执行错误。 下面是python中的片段。 我知道lambda应该在“保留”期间重试(默认为24小时),但我希望放弃并最

  • 问题内容: 任何人都可以解释将HttpRequest和HttpResponse记录在文件中的任何技术。 我们正在使用Spring MVC / Spring Rest。 我们想要的是在处理请求之前将其拦截并记录下来。用同样的方法在发送响应之前先截取响应并将其记录下来。 非常感谢。 问题答案: 为了记录请求,Spring提供了一个类(实际上是子类之一)。这可用于记录传入的请求(处理之前和之后)。 根据