6

次のように Compojure でリソースを定義したい:

(ANY "myres/:id" [id] (handler))

:id をオプションにする必要があります (ID が指定されているかどうかによって、API の動作が異なります)。

アクセスしようとすると、これは正常に機能します

http://mydomain/myres/12

ただし、アクセスしようとすると

http://mydomain/myres

ID を指定しないと、404 が返されます。

パラメータ :id をオプションにする方法はありますか?

ありがとう!

4

1 に答える 1

9

以下に示すように、id を使用するルートと ID を使用しないルートの 2 つの異なるルートを作成し、両方のルートからハンドラーを呼び出します。

(defn handler
    ([] "Response without id")
    ([id] (str "Response with id - " id)))

(defroutes my-routes
    (ANY "myres" [] (handler))
    (ANY "myres/:id" [id] (handler id)))
于 2013-04-06T16:29:30.050 に答える