【问题标题】:Where do I place Swagger-UI in a Rails App with Grape?我在哪里可以将 Swagger-UI 放在带有 Grape 的 Rails 应用程序中?
【发布时间】:2012-10-26 22:48:55
【问题描述】:

我正在重写(是的,我知道!)一个主要由 API 驱动的 Rails 应用程序,使用 Intridea 的 Grape 和 grape-swagger gem 来启用用于文档的 Swagger UI。

所以我运行了一个简单的 hello world 应用程序。似乎可以从 swagger 测试中发现,尽管它目前正在给出 JSON 解析错误(我将在接下来研究)。我想将 swagger UI 放入 Rails 应用程序中,指向 /swagger_doc.json,以便在构建时确保文档在旁边正确构建。

我应该将 Swagger UI 放在 rails 应用程序的什么位置?公共目录?

【问题讨论】:

    标签: ruby-on-rails json api swagger grape-api


    【解决方案1】:

    好的,所以我发现了一些混乱,当我之前尝试将它们全部放在公共目录中时,它们什么也没有显示。

    myapp/public/swagger-ui-1.1.1/files
    

    1) 我不知道这是否应该有所作为,但是我在 config.ru 中加载 rails 应用程序和葡萄应用程序的顺序似乎对路由的处理方式产生了影响......我需要了解更多这是如何工作的。但是现在路线中安装的葡萄应用程序可以满足我的期望。结果,将 swagger-ui 解压缩到公共然后就去

    http://appurl/swagger-ui-1.1.1/ 
    

    给了我招摇的用户界面。如果有更多细节,我会添加更多细节。

    编辑:由于会有像我这样需要帮助的其他用户,我将在下面概述。这很容易:

    在资产管道中创建 /swagger 子目录 - 我是在供应商下完成的。将 lib 文件从 swagger UI 复制到这些子目录。创建一个带有索引操作的基本 docs_controller(可以为空)。创建一个 views/docs 目录并将 swagger-ui index.html 复制到其中。将样式表和 javascript 调用更改为 index.html 中的资产标签。为文档添加资源路由。将调用 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。希望对大家有所帮助。

    【讨论】:

      【解决方案2】:

      如果你看看这个宝石会很容易,https://github.com/BrandyMint/grape-swagger-rails

      【讨论】:

        【解决方案3】:

        我们必须将所有 Swagger UI 放在 rails 应用的公共目录中。 并与以下版本一起使用。

        gem '葡萄', '~> 0.7.0' gem 'grape-swagger', '~> 0.7.2'

        因为 'grape-swagger' gem 不支持最新版本。

        【讨论】:

          猜你喜欢
          • 2019-01-21
          • 2016-09-20
          • 2012-03-10
          • 1970-01-01
          • 2015-03-02
          • 1970-01-01
          • 2012-08-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多