我正在重写(是的,我知道!)一个主要由API驱动的Rails应用程序,使用Grape by Intridea和葡萄招摇宝石来启用Swagger UI进行文档化。
所以我有一个简单的hello world app正在运行。似乎可以从swagger测试中发现,虽然它现在正在给出JSON解析错误(我将在接下来看看)。我想将swagger UI放入Rails应用程序,指向/swagger_doc.json,以便我构建时可以确保文档正确地构建在一起。
我在哪里将Swagger UI放入rails应用程序?公共目录?
答案 0 :(得分:6)
好吧所以当我尝试将它们全部放在以前的公共目录中时,我发现了一些没有显示任何问题的snafus。
myapp/public/swagger-ui-1.1.1/files
1)我不知道这是否应该有所不同,但我在config.ru中加载rails应用程序和葡萄应用程序的顺序似乎对路由的处理方式有所不同......我需要了解更多如何工作。但现在在路线内安装的葡萄应用程序可以满足我的期望。结果,随心所欲的u拉开拉,然后去了
http://appurl/swagger-ui-1.1.1/
给了我一个昂首阔步的UI。如果还有更多细节,我会为此添加更多细节。
编辑:因为像我这样的其他用户需要帮助,我将在下面概述。这很简单:在资产管道中创建/ swagger子目录 - 我是在供应商下完成的。将lib文件从swagger UI复制到这些子目录。使用索引操作创建基本docs_controller(可以为空)。创建一个views / docs目录并将swagger-ui index.html复制到它。在index.html中将样式表和javascript调用更改为asset-tags。添加文档的资源路径。将调用window.swaggerUI的javascript函数中的discoveryURL更改为“http://my.root.url/swagger_doc.json”(理想情况下来自ENV变量)。
就是这样。它现在才有效。我遇到的一个问题是,当Swagger在docs子域上运行时,在api子域下使用我的Grape API是CORS。通过添加以下内容轻松修复Grape:
before do
header "Access-Control-Allow-Origin", "http://#{ENV["BASE_URL"]}"
header "Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT"
header "Access-Control-Max-Age", "1728000"
end
到您的Grape api.rb.希望所有人都能帮到别人。
答案 1 :(得分:1)
答案 2 :(得分:0)
我们必须将所有Swagger UI放在rails app的公共目录中。 并使用以下版本。
gem' grape','〜> 0.7.0' gem' grape-swagger','〜> 0.7.2'
因为' grape-swagger' gem不支持最新版本。