【问题标题】:Can't see Swagger service endpoints看不到 Swagger 服务端点
【发布时间】:2020-03-24 02:30:58
【问题描述】:

我正在尝试访问我的 Swagger 服务端点。代码如下:

(defn service-routes []
  ["/api"
   {:middleware [middleware/wrap-formats]
    :swagger {:id ::api}}
   ["" {:no-doc true}
    ["/swagger.json"
     {:get (swagger/create-swagger-handler)}]
    ["/swagger-ui*"
     {:get (swagger-ui/create-swagger-ui-handler
             {:url "api/swagger.json"})}]]
   ["/business-partners"
    {:get
     (fn [_]
       (response/ok (bp/business-partners-list)))}]
   ["/business-partner"
    {:post
     (fn [{:keys [params]}]
       (try
         (bp/save-business-partner params)
         (response/ok {:status :ok})
         (catch Exception e
           (let [{id :business-partners/error-id
                  errors :errors} (ex-data e)]
             (case id
               :validation
               (response/bad-request {:errors errors})
               (response/internal-server-error
                 {:errors {:server-error ["Failed to save message!"]}}))))))}]])

但是当我尝试在浏览器中访问 http://localhost:3000/api/swagger.json 时,我得到了这样的响应:

{"swagger":"2.0",
 "x-id":["businesspartners.routes.services/api"],
 "paths":{
   "/api/business-partners": {"get":  {}},
   "/api/business-partner":  {"post": {}}}}

我不明白为什么我得到的是 json 格式的文件,为什么没有看到 Swagger UI 来可视化并与我的服务交互?我应该得到这样的东西:

【问题讨论】:

  • swagger.json 路由确实应该返回像上面这样的元数据,而不是 ui。如果你访问 '/api/index.html' 会发生什么?

标签: clojure swagger swagger-ui


【解决方案1】:

我想你会在 /api 下找到 swagger ui

【讨论】:

    【解决方案2】:

    我也面临同样的问题,并使用带有语言 jaxrs 的 Java 代码生成 生成代码后,您将在 target/generated-sources/swagger/ 文件夹下看到使用端点生成的 index.html 页面。确保将其包含在构建中并指向此页面的 api 路径,以便您可以将端点视为 html。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-29
      • 2023-03-17
      • 2019-12-10
      • 1970-01-01
      • 2019-05-30
      • 2021-10-26
      • 1970-01-01
      相关资源
      最近更新 更多