2017-12-06 38 views
8

मैं एक स्पॉक सर्वर चला रहा हूं और कुछ स्थिर सामग्री की सेवा करना चाहता हूं। मैं "Web.Spock.Action" पैकेज से respondMiddleware फ़ंक्शन का उपयोग कर रहा हूं।स्पॉक (हास्केल) का उपयोग करके स्थिर सामग्री कैसे प्रदान करें?

हस्ताक्षर है:

respondMiddleware :: Monad m => Middleware -> ActionCtxT ctx m a 

मैं इस "Middleware" "Network.Wai.Middleware.Static" पैकेज

staticPolicy :: Policy -> Middleware 

और "नीति" का उपयोग करने से staticPolicy फ़ंक्शन का उपयोग हो रही है addBase "Network.Wai.Middleware.Static" पैकेज से

addBase :: String -> Policy 

get ("/") $ 
     respondMiddleware $ staticPolicy $ addBase ("static") 

static एक index.html और संबंधित जे एस और सीएसएस फ़ाइलें है और यह ढेर परियोजना के रूट निर्देशिका में रखा गया है: यहाँ मेरी codeblock है। मुझे मिली त्रुटि Failed to load resource: the server responded with a status of 400 (Bad Request)

+2

थोड़ा समय के बाद से मैं स्पॉक का उपयोग किया है किया गया है, तो यह गलत हो सकता है: पथ '"/"' में अपनी RouteSpec एक वाइल्डकार्ड नहीं है, इसलिए मुझे लगता है कि केवल से मेल खाएगी * बिल्कुल * '/'। मुझे संदेह है कि आप क्या चाहते हैं 'मिडलवेयर $ staticPolicy $ addBase "static" '। –

उत्तर

2

ऐसा करने का सही तरीका Web.Spock.Action पैकेज से html फ़ंक्शन का उपयोग कर रहा है।

मैंने अपनी एचटीएमएल फाइल को पैरामीटर करने के लिए अदरक का उपयोग करके एक जिन्जा टेम्पलेटिंग का उपयोग किया और फिर html फ़ंक्शन का उपयोग करके इसे सेवा दी।

import qualified Web.Spock.Action as SA 

serveHtml :: JinjaTemplate -> SA.ActionT (LoggingT IO)() 
serveHtml tmplt = SA.html tmplt 
संबंधित मुद्दे