4

簡単な Web アプリで Racket ガイドのチュートリアルに従おうとしていますが、基本的な基本的なものを取得できません。

リクエスト URL に基づいてサーブレットに異なるコンテンツを提供させるにはどうすればよいでしょうか? 精査したにもかかわらず、巨大なブログの例でさえ 1 つの大きなファイルであり、すべてが巨大な get クエリ文字列で処理されていました。URL に基づいて何かを行うにはどうすればよいですか? Clojure の Noir フレームワークは、この基本的な機能をホームページ ( defpage) の前面に大きく配置していますが、Racket でこれを行うにはどうすればよいでしょうか?

4

1 に答える 1

3

URL はrequest、サーブレットが引数として受け取る構造の一部です。を呼び出すことで URL を取得できrequest-uri、それを参照して必要なことを行うことができます。要求には、HTTP メソッド、ヘッダーなども含まれます。

しかし、それはかなり低レベルです。より良い解決策はdispatch-rules、URL パターンからハンドラー関数へのマッピングを定義するために を使用することです。ドキュメントの例を次に示します。

(define-values (blog-dispatch blog-url)
  (dispatch-rules
   [("") list-posts]
   [("posts" (string-arg)) review-post]
   [("archive" (integer-arg) (integer-arg)) review-archive]
   [else list-posts]))

メインのサーブレット ハンドラを作成しますblog-dispatch。URLhttp://yoursite.com/は を呼び出すことによって処理されます。(list-posts req)ここreqで、 はリクエスト構造です。URLhttp://yoursite.com/posts/a-funny-storyは を呼び出すことによって処理され(review-post req "a-funny-story")ます。等々。

于 2013-08-03T02:47:31.810 に答える