Scheme 球拍URL发送

Scheme 球拍URL发送,scheme,webserver,url-routing,racket,Scheme,Webserver,Url Routing,Racket,我正在尝试将URL调度与Racket(以前的PLT方案)连接起来。我已经看了教程和服务器文档。我不知道如何将请求路由到相同的servlet 具体示例: #lang scheme (require web-server/servlet) (require web-server/dispatch) (provide/contract (start (request? . -> . response/c))) (define (start request) (blog-dispatch

我正在尝试将URL调度与Racket(以前的PLT方案)连接起来。我已经看了教程和服务器文档。我不知道如何将请求路由到相同的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 "") #朗方案 (需要web服务器/servlet) (需要web服务器/分派) (提供/合同(启动(请求?->.response/c))) (定义(启动请求) (博客发送请求) (定义值(博客发送博客url) (b)调度规则 ((“”)列出帖子) (((“posts”(字符串arg))审阅post) (((“存档”(整数arg)(整数arg))查看存档) (其他列出员额) (定义(要求列出职位)`(列出职位)) (定义(审查职位要求p)`(审查职位,p)) (定义(审查档案需求y m)`(审查档案,y,m)) (需要web服务器/servlet环境) (服务/servlet启动) #:启动浏览器?#t #:退出 #:听ip#f #:端口8080 #:额外文件路径(列表(生成路径“js”) (构建路径“css”)) #:servlet路径“”) 假设使用上述代码,
localhost:8080/
将进入一个显示“列出帖子”的页面。转到
localhost:8080/posts/test
将转到一个Racket“未找到文件”页面(我希望它会转到一个写有“review post test”的页面)


我觉得我错过了一些小而明显的东西。有人能给我一个提示吗?

你写的不是一个完整的程序,所以我无法调试它

下面是一个带有注释的程序,它可以实现您想要的功能,可能是:

#lang scheme ; specify the right language
; include the correct libraries
(require web-server/servlet
         ; this one gets "serve/servlet"
         web-server/servlet-env)

(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))

; starts a web server where...
(serve/servlet start ; answers requests
               #:servlet-path "" ; is the default URL
               #:port 8080 ; is the port
               #:servlet-regexp #rx"") ; is a regexp decide
                                       ; if 'start' should
                                       ; handle the request
由于函数
列出帖子
查看帖子
查看归档
没有返回合理的HTML xexpr编码,因此您必须查看源代码才能正确查看它们

请直接给我发电子邮件或给PLT方案邮件列表发电子邮件。(注:我们将PLT方案更名为“Racket”,以便您在发布时可以看到。)


杰伊·麦卡锡

是的。我缺少servlet regexp参数。正如我所怀疑的;小而明显的东西。谢谢你帮助我。