代码之家  ›  专栏  ›  技术社区  ›  Freid001

如何设置路径参数的默认值?

  •  0
  • Freid001  · 技术社区  · 6 年前

    在下面的示例中,如何设置路径参数项id的默认值?

    (POST "/:id" [item-id]
      :path-params [item-id :- Int]
      :body [body Body]
      :query-params [{item-name :- Str nil}]
                     :summary "Create or update a item."
                     (ok ...))
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Tommi Reiman    6 年前

    您应该将路径参数名与字符串占位符匹配。路径参数不需要默认值-如果不存在路径参数,则路由不匹配。下面是一个工作示例:

    (require '[compojure.api.sweet :refer :all])
    (require '[ring.util.http-response :refer :all])
    (require '[schema.core :as s])
    (require '[muuntaja.core :as m])
    
    (def app
      (api
        (POST "/:item-id" []
          :path-params [item-id :- s/Int]
          :query-params [{item-name :- s/Str nil}]
          :summary "Create or update a item."
          (ok {:item-id item-id
               :item-name item-name}))))
    
    (->> {:request-method :post
          :uri "/123"
          :query-params {"item-name" "kikka"}}
         (app)
         :body
         (m/decode m/instance "application/json"))
    ; => {:item-name "kikka", :item-id 123}