1

RESTを介して公開しているClojureサービスがあります。次のように定義されたページがあります。

(defpage "/package_versions/:id" {:keys [id]}
  (do
    (println "ID: " id)
    (if-let [pv (pv/fetch-one (db/keyspace) id)]
      (response/json pv)
      (response/status 404 nil))))

idに使用できる文字は何ですか?スラッグ1-2-3、1 | 2 | 3、1_2_3はすべて機能しますが、1.2.3は機能しません。を含むナメクジを作る方法はありますか?仕事?ノワールルートで許可されている文字は何ですか?この動作の原因となるコードはどれですか:noir、ring、compojure?

4

2 に答える 2

1

Clout テスト ケースをご覧ください。

テストで使用されるスラッグには実際には特殊文字が含まれていないため、どの文字が有効かはわかりませんが、ファイルの最後に、おそらく使用できるカスタム ルート マッチャーを定義する方法の例があります。必要に応じてドットを合わせます。

noir.core/compojure-routeまたは のいずれかを使用して、カスタム ルート マッチャーを Noir にプラグインできると思いますnoir.core/custom-handler

また、リテラル ドットを含むテストもあります。たとえば"/foo.:ext、 のような URL に一致 /foo.txtするため、スラッグにドットを許可しないのがバグではなく機能であったとしても驚かないでしょう。

于 2012-02-28T22:00:26.780 に答える
0

cloutCompojureが使用するライブラリであるこれを担当する必要があります。wakefulさまざまなマッチャーを設定する1つの例、特に。の使用を確認できますroute-compile

于 2012-02-28T19:45:41.090 に答える