我正在尝试使用Racket(以前的PLT Scheme)连接URL调度 . 我看了一下教程和服务器文档 . 我无法弄清楚如何将请求路由到相同的servlet .
具体例子:
#lang scheme
(require web-server/servlet)
(require web-server/dispatch)
(provide/contract (start (request? . -> . response/c)))
(define (start request)
(blog-dispatch request))
(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)))
(define (list-posts req) `(list-posts))
(define (review-post req p) `(review-post ,p))
(define (review-archive req y m) `(review-archive ,y ,m))
(require web-server/servlet-env)
(serve/servlet start
#:launch-browser? #t
#:quit? #f
#:listen-ip #f
#:port 8080
#:extra-files-paths (list (build-path "js")
(build-path "css"))
#:servlet-path "")
假设上面的代码, localhost:8080/
转到一个显示"list-posts"的页面 . 转到 localhost:8080/posts/test
转到一个Racket "file not found"页面(我希望它转到一个说"review-post test"的页面) .
感觉我错过了一些小而明显的东西 . 任何人都可以给我一个提示吗?
1 回答
你写的不是一个完整的程序,所以我无法调试它 .
这是一个带有注释的程序,可以执行您想要的操作:
因为函数
list-posts
,review-post
和review-archive
必须查看源代码才能看到它们 .请随时给我发电子邮件或发送电子邮件到PLT计划邮件列表 . (注意:我们正在将PLT Scheme重命名为“Racket”,以便您在发布时看到 . )
杰伊麦卡锡