Grails 3.1.4带有Swagger文档的项目

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Grails 3.1.4带有Swagger文档的项目相关的知识,希望对你有一定的参考价值。

Description

我正在使用Grails 3.1.4,我在使用Swagger Api记录我的Controller类时遇到问题。

grails -version给了我这个输出:

| Grails Version: 3.1.4
| Groovy Version: 2.4.6
| JVM Version: 1.8.0_73

我尝试使用这些来源将Swagger集成到项目中: - https://grails.org/plugin/swaggydoc - https://rahulsom.github.io/swaggydoc/

根据这些来源,我必须做以下事情:

1. Add dependencies to build.gradle:

compile 'io.swagger:swagger-core:1.5.7'
compile 'io.swagger:swagger-jaxrs:1.5.7'
compile "com.github.rahulsom:swaggydoc-commons:0.24.0"
compile "org.grails.plugins:swaggydoc:0.27.0"

2. Add another repository to build.gradle:

`jcenter()`

3. Annotate my Controller in the following fashion:

@Api(value = "myValue", description = "this controller does something")
@Path("/myapproot/myDomainClassX")
MyDomainClassXController{
    @GET
    @Path("/myFunction")
    def myFunction(){
        render "MyDomainClassXController, myFunction(), did something"
    }
}

4. In the file application.yml I added:

grails:
    mime:
        disable:
            accept:
                header:
                    userAgents: []

5. The aforementioned sources write about a Config.groovy which I do not have, so instead of writing:

swaggydoc {
    contact = "developer@coer.com"
    description = "API description"
    title = "My Swagger Doc for my awesome project"
    apiVersion = "0.2cents"
}

6. into the non-existent Config.groovy, I added the same text into the file application.yml using the yml syntax:

swaggydoc:
    contact: "developer@coder.com"
    description: "API Description"
    title: "My Swagger Doc for my awesome project"
    apiVersion: "0.2cents"

Result

What works is:

我正在使用bootRun任务运行我的Grails应用程序并浏览到http://localhost:8080/myapproot/myDomainClassX/myFunction并在我的浏览器中看到字符串“MyDomainClassXController,myFunction(),做了些什么”。

What not works is:

当我浏览到http://localhost:8080/myapproot/api时,我收到“找不到页面(404)”错误。在这里,我希望看到Swagger注释产生文档的神奇之处。

Question

在源代码中提到的Swagger插件的配置中我做错了什么?

答案

如果您在/ myapproot / api上获得404,请检查您的UrlMappings.groovy文件。

在此处保留此默认映射:

"/$controller/$action?/$id?(.$format)?"{
    constraints {
        // apply constraints here
    }
}

或者至少允许

get "/api/$action?"(controller: 'api')

这应该让你至少用那个URL击中swaggy控制器。

以上是关于Grails 3.1.4带有Swagger文档的项目的主要内容,如果未能解决你的问题,请参考以下文章

带有 Swagger UI 的 Apache Wicket REST

grails框架的g:paginate分页标签的使用

多Model项目中,使用Swagger

带有 3rd 方库的 Grails Asset-Pipeline 系统

使用 SpringDoc webflux 支持时无法显示 Swagger/OpenApi 文档

在某些机器上构建时,带有弹簧靴的 Swagger 可以工作,但在其他机器上则不行