Отправка URL ракетки

Я пытаюсь поднять трубку отправку URL с Ракеткой (раньше Схема PLT). Я смотрел на учебное руководство и документацию сервера. Я не могу выяснить как к запросам маршрута к тем же сервлетам.

Определенный пример:

#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/ переходит к странице, которая говорит "сообщения списка". Движение к localhost:8080/posts/test переходит к Ракетке "файл, не найденный" страница (я ожидал бы, что это перейдет к странице, которая говорит "тест сообщения обзора").

Такое чувство, что я пропускаю что-то маленькое и очевидное. Кто-либо может дать мне подсказку?

7
задан Inaimathi 8 June 2010 в 13:46
поделиться

1 ответ

То, что вы написали, не является целой программой, поэтому я не могу ее отлаживать.

Вот программа с аннотациями, которая, вероятно, делает то, что вы хотите:

#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 не возвращают разумные кодировки xexpr HTML, вам нужно просмотреть исходный код, чтобы увидеть их правильно.

Пожалуйста, напишите мне напрямую или по электронной почте в список рассылки PLT Scheme. (Примечание: мы переименовываем схему PLT в «Racket», чтобы вы могли видеть это при публикации.)

Джей Маккарти

12
ответ дан 6 December 2019 в 21:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: