gpt4 book ai didi

scheme - Racket URL 调度

转载 作者:行者123 更新时间:2023-12-04 06:07:59 29 4
gpt4 key购买 nike

我正在尝试使用 Racket(以前称为 PLT Scheme)连接 URL 调度。我查看了教程和服务器文档。我不知道如何将请求路由到相同的 servlet。

具体例子:

#lang 方案

(需要网络服务器/servlet)
(需要网络服务器/调度)
(提供/契约(Contract)(开始(请求?。->。响应/c)))

(定义(启动请求)
(博客发送请求))

(define-values (blog-dispatch blog-url)
(调度规则
(("") 列表帖子)
(("posts"(string-arg)) review-post)
(("archive"(integer-arg) (integer-arg)) review-archive)
(其他列表帖子)))

(定义(列表帖子请求)`(列表帖子))
(定义 (review-post req p) `(review-post ,p))
(define (review-archive req y m) `(review-archive ,y ,m))

(需要 web-server/servlet-env)
(服务/servlet 启动
#:启动浏览器? #t
#:退出? #F
#:listen-ip #f
#:8080端口
#:extra-files-paths (list (build-path "js")
(构建路径“css”))
#:servlet-path "")

假设上面的代码,localhost:8080/转到一个页面,上面写着“list-posts”。前往 localhost:8080/posts/test转到 Racket 的“找不到文件”页面(我希望它会转到显示“评论-发布测试”的页面)。

感觉就像我错过了一些小而明显的东西。谁能给我一个提示?

最佳答案

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

这是一个带有注释的程序,可以执行您想要的操作,可能是:

#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

因为函数 list-posts , review-post , 和 review-archive不要返回 HTML 的合理 xexpr 编码,您必须查看源代码才能正确查看它们。

请随时直接给我发电子邮件或通过电子邮件发送 PLT 计划邮件列表。 (注意:我们将 PLT Scheme 重命名为“Racket”,以便您在发帖时可以看到。)

杰伊·麦卡锡

关于scheme - Racket URL 调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2879092/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com