Ich bin neu zu Swagger und ich möchte Swagger zu Restful API-Projekt mit Grails Framework integrieren. Bitte helfen Sie, wenn jemand eine Ahnung hat, was ich falsch mache?Swagger Grails Integration
meine Grails Spezifikation als unten:
| Grails Version: 3.0.7
| Groovy Version: 2.4.4
| JVM Version: 1.8.0_71
Haben einige Einstellungen für Prahlerei, wie unten:
in build.gradle:
dependencies {
...
compile "io.swagger:swagger-core:1.5.3"
compile "io.swagger:swagger-jaxrs:1.5.3"
...
}
in 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 = '[email protected]'
license = ''
licenseUrl = ''
}
corsFilter(CorsFilter)
}
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()
}
}
Added a UrlMapping für Controller:
"/api/info"(controller: 'ApiDoc')
"/"(controller: 'Index')
"500"(controller: 'InternalServerError')
"404"(controller: 'NotFound')
Added a Service 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);
}
}
hinzugefügt Swagger-ui in src/maineinen Regler ApiDocController.groovy Hinzugefügt/webapp/dist Ordner
with a working customised API URL "http://localhost:8080/api/orders" in index.html
hinzugefügt CorsFilter Einstellung in src/main/groovy/CorsFilter.groovy
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);
}
}
auf dem Server zu starten. API für Bestellungen funktioniert jedoch korrekt, wenn ich versuche, die API in Swagger UI-Indexdatei zu laden. es zeigt. Keine Operationen in den Spezifikationen definiert!
wie in einem Bilder angehängt.
Ist http: // localhost: 8080/api/bestellt den Endpunkt, der die Swagger-Spezifikation liefert? denn aus der Sicht der Dinge ist das nur der Endpunkt eines bestimmten Weges ...Sie müssen den Swagger-Spezifikations-JSON in swagger-ui laden. Es wird nicht automatisch Ihre API oder irgendetwas entdecken. – Doqnach
Welchen Installationsleitfaden haben Sie verfolgt? Sie sehen viel komplizierter aus als die in https://rahulsom.github.io/swaggydoc/guide/installation.html – JJHolloway
jetzt habe ich das Projekt mit https://rahulsom.github.io/swaggydoc/guide/ aktualisiert installation.html Anleitung. es funktioniert gut. Sie müssen jedoch im Vergleich zu Springfox mehr Kommentare zu Controllern hinzufügen. –