【发布时间】: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