Api 大摇大摆地集成到Dropwizard中

Api 大摇大摆地集成到Dropwizard中,api,rest,swagger,dropwizard,swagger-ui,Api,Rest,Swagger,Dropwizard,Swagger Ui,我对dropwizard(dropwizard.io)还比较陌生&刚刚完成了他们的教程。我想将Swagger(Swagger.io)集成到这个示例应用程序中。 我发现: github.com/federicio/dropwizard-swagger-sample-app github.com/federicio/dropwizard-swagger 生成的JSON看起来非常相似,但是我无法扩展REST资源来查看它们各自的操作。 我注意到的唯一区别是,swagger集成的示例代码使用服务器,而

我对dropwizard(dropwizard.io)还比较陌生&刚刚完成了他们的教程。我想将Swagger(Swagger.io)集成到这个示例应用程序中。 我发现:

  • github.com/federicio/dropwizard-swagger-sample-app
  • github.com/federicio/dropwizard-swagger
生成的JSON看起来非常相似,但是我无法扩展REST资源来查看它们各自的操作。 我注意到的唯一区别是,swagger集成的示例代码使用服务器,而官方的drop wizard示例使用应用程序

这里有一个图像(i.stack.imgur.com/QzhPa.png)

你能告诉我我的方法有什么问题吗。 非常感谢你。以下是我的方法的代码:

编辑:

用于api-文档{
“apiVersion”:“0.0”,
“大摇大摆版”:“1.2”,
“API”:[{
“路径”:“/示例”
}, {
“路径”:“/你好,世界”,
“说明”:“关于问候语的操作”
}]
}
样品{
“apiVersion”:“0.0”,
“大摇大摆版”:“1.2”,
“基本路径”:http://geoHeil.local:8080",
“resourcePath”:“/示例”,
“API”:[{
“路径”:“/样本”,
“业务”:[{
“方法”:“获取”,
“摘要”:“示例端点”,
“注”:“注”,
“类型”:“无效”,
“昵称”:“获取”,
“授权”:{},
“参数”:[]
}]
}, {
“路径”:“/sample/hello with path param/{name}”,
“业务”:[{
“方法”:“获取”,
“摘要”:“具有路径参数的示例端点”,
“注”:“注”,
“类型”:“无效”,
“昵称”:“getWithPathParam”,
“授权”:{},
“参数”:[{
“名称”:“名称”,
“必需”:正确,
“类型”:“字符串”,
“参数类型”:“路径”
}]
}]
}, {
“路径”:“/sample/hello with query param”,
“业务”:[{
“方法”:“获取”,
“摘要”:“带查询参数的示例端点”,
“注”:“注”,
“类型”:“无效”,
“昵称”:“getWithQueryParam”,
“授权”:{},
“参数”:[{
“名称”:“名称”,
“必需”:false,
“类型”:“字符串”,
“参数类型”:“查询”
}]
}]
}]
}
世界你好{
“apiVersion”:“0.0”,
“大摇大摆版”:“1.2”,
“基本路径”:http://geoHeil.local:8080",
“resourcePath”:“/你好,世界”,
“API”:[{
“路径”:“/你好,世界”,
“业务”:[{
“方法”:“获取”,
“摘要”:“问候端点”,
“注”:“注”,
“类型”:“无效”,
“昵称”:“你好”,
“授权”:{},
“参数”:[{
“名称”:“名称”,
“必需”:false,
“项目”:{
“类型”:“字符串”
},
“参数类型”:“查询”
}]
}]
}]

}
在生成的JSON中,我没有看到任何明显的会导致操作无法展开的内容

但是,与dropwizard swagger包捆绑在一起的swagger ui有点旧。我会尝试使用新版本的swagger ui

我不确定它是否会与捆绑的swagger ui冲突,但基本上您需要克隆/dist目录并将其复制到静态内容中

另一个选项是在本地运行swagger ui(仅用于测试目的),但打开/dist/index.html并将其指向/api docs目录。但是,为了使其正常工作,您需要启用CORS-

编辑:

我没有注意到你用JSON编辑了这个问题,这使它更容易阅读。
GET/hello world操作出现问题。它看起来应该接受字符串数组作为查询参数,但该参数的定义中缺少一个
“type”:“array”
。在没有看到方法的声明和注释之前,我不能说是什么导致了它,但这正是您应该看到的。

现在有一个Swagger spec 2.0示例可用:


这使用了最新的swagger核心库,具有最小的依赖性。请注意,Jackson的版本需要从dropwizard的2.3.2更新为swagger的2.4.2。

您使用的是哪个版本的swagger ui?您可以查看swagger-ui.js文件的顶部。我使用的是:io.federicio。我在js文件的顶部找不到版本信息。但是在js控制台中显示了一些错误,如UncaughtType错误。我没有dropwizard环境就绪。您是否有机会编辑问题并通过/api文档和/api文档/sample的输出?当然:api文档:{“apiVersion”:“0.0”,“swaggerVersion”:“1.2”,“api”:[{“path”:“/sample”},{“path”:“/hello world”,“description”:“关于问候语的操作”}