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

WebFlux Swagger(开放API)Integraton-POST请求示例

宋建本
2023-03-14

我已经将Swagger(OpenAPI)与Spring Webflux集成,如下所述:https://springdoc.org/#spring-weblfuxwebmcfn-with-functional-endpoints using routeroperation。集成工作良好,可以在/swagger-ui.html访问

@Configuration
public class  MyRouter {

    @RouterOperations({
            @RouterOperation(path = "/data", beanClass = MyHandler.class, beanMethod = "getData"),
            @RouterOperation(path = "/allData", beanClass = MyHandler.class, beanMethod = "getAllData") })

    @Bean
    public RouterFunction<ServerResponse> route(MyHandler MyHandler) {

        return RouterFunctions
                .route(RequestPredicates.POST("/data").and(RequestPredicates.accept(MediaType.APPLICATION_JSON)), MyHandler::getData)
                .andRoute(RequestPredicates.GET("/allData").and(RequestPredicates.accept(MediaType.APPLICATION_JSON)), MyHandler::getAllData);
    }
}

添加RouterOperations注释后,我可以看到swagger-ui正确地显示了GET和POST API,但没有显示请求模式示例

我还遇到了yaml/json文件来描述这一点。但是我还没有找到在应用程序中放置这个文件的位置,以便swagger-ui使用它。

共有1个答案

夹谷烨赫
2023-03-14

终于找到了

使用@operation和@schema,可以定义请求体中作为输入所需的类。这将显示为Swagger-UI中的示例json结构。不需要其他配置。

@RouterOperations({
            @RouterOperation(
                    path = "/data", beanClass = MyHandler.class,  beanMethod = "getData",
                    operation = @Operation(
                            operationId = "opGetData",
                            requestBody = @RequestBody(required = true, description = "Enter Request body as Json Object",
                                                content = @Content(
                                                        schema = @Schema(implementation = ApiRequestBody.class))))),
            @RouterOperation(path = "/allData", beanClass = MyHandler.class, beanMethod = "getAllData")})

@Bean
    public RouterFunction<ServerResponse> route(MyHandler myHandler) {

        return RouterFunctions
                .route(RequestPredicates.POST("/data").and(RequestPredicates.accept(MediaType.APPLICATION_JSON)), myHandler::getData)
                .andRoute(RequestPredicates.GET("/allData").and(RequestPredicates.accept(MediaType.APPLICATION_JSON)), myHandler::getAllData);
    }
 类似资料:
  • 对于包含JSON主体的post请求,我使用rest assured 我的post请求代码是:- 好心的帮助....

  • 1)如何获取文件夹和文件列表 2)如何创建文件夹/文件等。 例如,在POST请求中,“https://www.googleapis.com/drive/v1/files&title=pets&mimetype=application/vnd.google-apps.folder” 提前致谢

  • 我正在开发一个脚本,以访问图形API阅读我们的广告中的所有用户。我正在通过以下方式使用AXIOS执行一个请求: 然而,这失败了,因为: client_id=535FB089-9FF3-47B6-9BFB-4F1264799865&scope=https%3a%2f%2fgraph.microsoft.com%2f.default&client_secret=qwgdyamab0yskul1qkv5

  • 这一条给出: 这个: 我想做的是避免为所有测试编写完整的jsons,如果我可以跳过所有“”和{},将会更快。我的方法正确吗?

  • 我试图从AWS API网关上的REST API调用POST方法。使用curl(用于POST)从命令行正确调用API,使用GET从浏览器正确调用API,因此我知道它工作正常,但我似乎找不到正确的方法使用ConnectionRequest类在codename one上调用POST方法,阅读文档theres addArgument()和setRequestBody(),他们说,它们是独占的,所以我尝试了

  • 问题内容: 我几天前才刚开始学习android,但是我将JSON数据上传到服务器时遇到了问题。我设法通过以下代码检索它: 编辑:我确实设法使用外部OKHTTP库检索文件,但是我想这样做而不使用外部库。 我现在正尝试将数据发送到具有相同字段的相同服务器。我搜索了互联网,但是发现的大多数东西都已经过时了。我真的很想提供一些帮助或示例。最好的祝福 问题答案: 使用此处定义的Volley 。这要容易得多。