2010-05-21 13 views
6

मैं रैकेट (पूर्व में पीएलटी योजना) के साथ यूआरएल प्रेषण को हुक अप करने की कोशिश कर रहा हूं। मैंने ट्यूटोरियल और सर्वर प्रलेखन पर एक नज़र डाली है। मैं यह नहीं समझ सकता कि उसी सर्लेट में अनुरोध कैसे रूट करें।रैकेट यूआरएल प्रेषण

विशिष्ट उदाहरण:

 
#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 पर जाकर एक रैकेट "फ़ाइल नहीं मिली" पृष्ठ पर जाता है (मुझे उम्मीद है कि यह उस पृष्ठ पर जायेगा जो "समीक्षा-पोस्ट परीक्षण" कहता है)।

ऐसा लगता है कि मुझे कुछ छोटा और स्पष्ट याद आ रहा है। क्या कोई मुझे संकेत दे सकता है?

उत्तर

11

जो आपने लिखा है वह एक संपूर्ण कार्यक्रम नहीं है, इसलिए मैं इसे डीबग नहीं कर सकता।

#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 योजना का नाम बदलने कर रहे हैं "रैकेट" ताकि आप देख सकते हैं जब आप पोस्ट कि।)

जे मैकार्थी

+0

हाँ। मैं servlet-regexp पैरामीटर खो रहा था। जैसा कि मुझे संदेह था; कुछ छोटा और स्पष्ट। मेरी मदद करने के लिए धन्यवाद। – Inaimathi

+0

ओपी में पूर्ण गैर-कामकाजी कार्यक्रम पोस्ट किया गया। – Inaimathi

संबंधित मुद्दे