2012年1月19日木曜日

Racket(Scheme)でWebサーバ+formlets


RacketでWebサーバ+formletsを使ってみます。
以下のコードで、ローカルホストの8000ポートでWebサーバが立ち上がります。


#lang racket
(require
web-server/servlet
web-server/servlet-env
web-server/dispatch
web-server/formlets)

(define-values (dispatcher _)
(dispatch-rules
[("input") show-input]
[("output") show-output]
[else show-default]))

(define form
(formlet
(div "input:" ,{=> input-string input})
input))

(define (show-input req)
(response/xexpr
`(html
(head (title "input"))
(body (form ((action "output"))
,@(formlet-display form)
(submit))))))

(define (show-output req)
(let ((input (formlet-process form req)))
(response/xexpr
`(html
(head (title "output"))
(body (p "output : " ,input))))))

(define (show-default req)
(response/xexpr
`(html (head (title "default"))
(body (p "default page")))))

(serve/dispatch dispatcher)



input-intフォームに数字以外の文字列を渡した場合に
contractで怒られるのを回避するにはどうすればよいのだろう。

0 件のコメント:

コメントを投稿