Rest 大摇大摆的grails集成
我是swagger新手,我想使用grails框架将swagger集成到RESTfulAPI项目中。如果有人知道我做错了什么,请帮忙 我的grails规范如下:Rest 大摇大摆的grails集成,rest,api,grails,groovy,swagger,Rest,Api,Grails,Groovy,Swagger,我是swagger新手,我想使用grails框架将swagger集成到RESTfulAPI项目中。如果有人知道我做错了什么,请帮忙 我的grails规范如下: | Grails Version: 3.0.7 | Groovy Version: 2.4.4 | JVM Version: 1.8.0_71 对swagger进行了如下设置: | Grails Version: 3.0.7 | Groovy Version: 2.4.4 | JVM Ve
| Grails Version: 3.0.7
| Groovy Version: 2.4.4
| JVM Version: 1.8.0_71
对swagger进行了如下设置:
| Grails Version: 3.0.7
| Groovy Version: 2.4.4
| JVM Version: 1.8.0_71
在build.gradle中:
dependencies {
...
compile "io.swagger:swagger-core:1.5.3"
compile "io.swagger:swagger-jaxrs:1.5.3"
...
}
在resources.groovy中
import io.swagger.jaxrs.config.BeanConfig
beans = {
swaggerConfig(BeanConfig) {
def serverUrl = "http://localhost:8080/"
def hostName = "localhost:8080"
resourcePackage = "grails.rest.example"
host = hostName
basePath = "/api"
version = 'v0' // Default "1".
title = 'Core Registration API, Version V0'
description = 'API for Accessing secured resources'
contact = 'testtest@mailinator.com'
license = ''
licenseUrl = ''
}
corsFilter(CorsFilter)
}
添加了控制器ApiDocController.groovy:
package grails.rest.example.apidoc
import grails.web.mapping.LinkGenerator
class ApiDocController {
LinkGenerator grailsLinkGenerator
def apiDocService
def index = {
String basePath = grailsLinkGenerator.serverBaseURL
render(view: 'index', model: [apiDocsPath: "${basePath}/api/swagger-json"])
//render(view: 'index', model: [apiDocsPath: "localhost:8080/api/swagger-json"])
//render(view: 'index', model: [apiDocsPath: "localhost:8080/dist/index.html"])
}
def swaggerJson = {
render apiDocService.generateJSON()
}
}
添加了控制器的URL映射:
"/api/info"(controller: 'ApiDoc')
"/"(controller: 'Index')
"500"(controller: 'InternalServerError')
"404"(controller: 'NotFound')
添加了一个服务ApiDocService.groovy:
//package com.care.apidoc
package grails.rest.example.apidoc
import io.swagger.jaxrs.config.BeanConfig
import grails.transaction.Transactional
import io.swagger.util.Json
@Transactional
class ApiDocService {
def swaggerConfig
/*
* generates SWAGGer JSON
*/
def generateJSON() {
String[] schemes = ["http"] as String[]
swaggerConfig.setSchemes(schemes)
swaggerConfig.setScan(true)
def swagger = swaggerConfig.getSwagger()
Json.mapper().writeValueAsString(swagger);
}
}
在src/main/webapp/dist文件夹中添加了招摇用户界面
with a working customised API URL "http://localhost:8080/api/orders" in index.html
在src/main/groovy/CorsFilter.groovy中添加了CorsFilter设置
import org.springframework.web.filter.OncePerRequestFilter
import javax.annotation.Priority
import javax.servlet.FilterChain
import javax.servlet.ServletException
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse
@Priority(Integer.MIN_VALUE)
public class CorsFilter extends OncePerRequestFilter {
public CorsFilter() { }
@Override
protected void doFilterInternal(HttpServletRequest req, HttpServletResponse resp, FilterChain chain)
throws ServletException, IOException {
String origin = req.getHeader("Origin");
boolean options = "OPTIONS".equals(req.getMethod());
resp.addHeader("Access-Control-Allow-Headers", "origin, authorization, accept, content-type, x-requested-with");
resp.addHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS");
resp.addHeader("Access-Control-Max-Age", "3600");
resp.addHeader("Access-Control-Allow-Origin", origin == null ? "*" : origin);
resp.addHeader("Access-Control-Allow-Credentials", "true");
if (!options) chain.doFilter(req, resp);
}
}
在启动服务器时。
然而,当我尝试在Swagger UI索引文件中加载API时,orders的API工作正常。它显示了。
规范中未定义任何操作
附在图片上。
你看过吗
下面是一个托管在Heroku中的示例,演示了springfox与它集成以生成开放API规范2.0 fka Swigger中的服务描述的能力。演示的源代码是
您可以看到这个演示在这里实时运行,演示由grails应用程序生成并使用swagger ui呈现的开放API规范
使这成为可能的图书馆是。它即将发布,可能需要一些工作才能使其成为grails插件。下面介绍了如何在库存储库中配置此功能
注意:这只适用于Grails3.x
这也是一个著名的图书馆在比赛中展示。非常感谢改进此库的反馈。是提供Swagger规范的端点吗?因为从表面上看,这只是某条路径的终点。。。您需要将Swagger规范JSON加载到Swagger ui中。它不会自动发现您的API或任何东西。您遵循了什么安装指南?您的步骤看起来比中的步骤复杂得多,现在我已经用指南更新了项目。它很好用。但是,与Springfox相比,需要向控制器添加更多注释。目前,我们可以基于grails版本使用这两个插件。rahulsom.github.io/swaggydoc/guide/installation.html或直接使用grails的招摇过市会造成许多障碍。斯威格团队将在不久的将来发布新版本。是的,我看到了这个。谢谢你,迪利普,谢谢你的帮助。请告诉我,此Springfox是否与grails 3.0.1兼容?编译Springfox grails run app时出错-stacktrace |运行grails CLI时出错:未找到名称[rest api]的配置文件。注意:堆栈跟踪已被筛选。使用-verbose查看整个跟踪。java.lang.IllegalStateException:未找到名称[rest api]的配置文件。位于org.grails.cli.GrailsCli.initializeProfileGrailsCli.groovy:354位于org.grails.cli.GrailsCli.executeGrailsCli.groovy:196位于org.grails.cli.GrailsCli.maingailscli.groovy:99@AtifHussainRESTAPI配置文件仅在3.1版本之后才可用,但是任何常规的Grails3应用程序也应该得到开箱即用的支持。非常感谢迪利普Krishnan@DilipKrishnanspringfox是否与OAS3.0配合使用?您是否计划维护springfox grails集成?