私は JavaScript/Web アプリケーションの初心者で、hunchentoot と backbone.js を使用して最初の Web アプリケーションを実装しようとしています。私が最初に実験したことは、model.fetch() と model.save() がどのように機能するかを理解することでした。
model.fetch() は「GET」リクエストを起動し、model.save() は代わりに「POST」リクエストを起動するようです。したがって、以下のように hunchentoot で簡単なハンドラーを作成しました。
(hunchentoot:define-easy-handler (dataset-handler :uri "/dataset") ()
(setf (hunchentoot:content-type*) "text/html")
;; get the request type, canbe :get or :post
(let ((request-type (hunchentoot:request-method hunchentoot:*request*)))
(cond ((eq request-type :get)
(dataset-update)
;; return the json boject constructed by jsown
(jsown:to-json (list :obj
(cons "length" *dataset-size*)
(cons "folder" *dataset-folder*)
(cons "list" *dataset-list*))))
((eq request-type :post)
;; have no idea on what to do here
....))))
これは、対応する URL が「/dataset」であるモデルのフェッチ/保存を処理するように設計されています。fetch は問題なく動作しますが、save() で本当に混乱しました。easy-handler によって起動および処理された「post」リクエストを見ましたが、リクエストには意味のあるヘッダーしかないようで、リクエストに隠された実際の json オブジェクトが見つかりません。だから私の質問は
- model.save() によって起動されたポスト リクエストから json オブジェクトを取得し、後で json ライブラリ (jsown など) を使用して解析できるようにするにはどうすればよいですか?
- 「保存」が成功したことをクライアントに知らせるために、hunchentoot は何と応答すればよいですか?
hunchentoot で "post-parameters" 関数を試してみたところ、nil が返され、グーグルで hunchentoot+backbone.js を使用している人はあまり見られませんでした。また、backbone.js の save() の仕組みを理解するのに役立つ記事やブログ投稿を教えていただけると助かります。
大変お待たせいたしました!