में त्रुटि स्थिति लौट रहा है मैं एक हास्केल नौसिखिया हूं।हास्केल और यसोड
मैं 10 का उपयोग कर Webdav सर्वर लिखने की कोशिश कर रहा हूं और अपाचे टॉमकैट 7 स्रोत कोड में WebdavServlet
के बाद मॉडलिंग किया गया हूं। मैंने अपने कार्यों में से एक से एक त्रुटि लौटने में एक समस्या में भाग लिया है।
कॉलर द्वारा भेजे गए Accept
शीर्षलेख के मान के आधार पर, मेरी वेब सेवा सेवा को एक्सएमएल या जेएसओएन वापस करनी चाहिए।
import Yesod
data RepXmlJson = RepXmlJson RepXml RepJson
instance HasReps RepXmlJson where
chooseRep (RepXmlJson (RepXml xml) (RepJson json)) = chooseRep
[ (typeXml, xml)
, (typeJson, json)
]
मैं अपने सेवाओं के बदले मूल्य, विशेष रूप से lockWebdavR
समारोह के रूप में इस डेटा प्रकार का उपयोग कर रहा: मैं RepXmlJson
नामक एक डेटा प्रकार परिभाषित किया। यदि संसाधन वर्तमान में लॉक है तो मैं स्थिति 423 (लॉक) वापस करने की कोशिश कर रहा हूं। मेरे कोड इस तरह दिखता है:
import qualified Data.ByteString as B
import qualified Data.Map as M
import qualified Data.Text as T
import qualified Network.Wai as W
mkYesodSub "Webdav" [] [parseRoutes|
/WebdavR COPY DELETE LOCK MKCOL MOVE OPTIONS PROPFIND PROPPATCH PUT UNLOCK
|]
type WebdavHandler yesod = GHandler Webdav yesod
webdavLocked423 :: Status
webdavLocked423 = Status 423 "Locked"
isLockedRequest :: Yesod master => Request -> WebdavHandler master Bool
-- isLockedRequest definition omitted for brevity
lockWebdavR :: Yesod master => WebdavHandler master RepXmlJson
lockWebdavR = do
request <- getRequest
locked <- isLockedRequest request
if locked
then return $
W.responseLBS webdavLocked423 [("Content-Type", "text/plain")] ""
else return undefined
मैं निम्न त्रुटि हो रही है:
Webdav.hs:94:10:
Couldn't match expected type `RepXmlJson'
with actual type `W.Response'
Expected type: GHandler Webdav master RepXmlJson
Actual type: GHandler Webdav master W.Response
In the expression:
return
$ W.responseLBS webdavLocked423 [("Content-Type", "text/plain")] ""
In a stmt of a 'do' block:
if locked then
return
$ W.responseLBS webdavLocked423 [("Content-Type", "text/plain")] ""
else
return undefined
मैं किताब "Developing Web Applications with Haskell and Yesod" के माध्यम से खोज की है, लेकिन उचित प्रकार की कोई त्रुटि लौटने का एक उदाहरण नहीं मिल सकता है (Rep...
) ।
मैं सही त्रुटि स्थिति के साथ RepXmlJson
कैसे बना सकता हूं?
मैंने वापसी मूल्य को 'sendResponseStatus webdavLocked423 $ RepXmlJson (RepXml "") (RepJson "") में बदल दिया है और यह संकलित करता है। धन्यवाद। बीटीडब्ल्यू, अच्छी किताब। – Ralph
मैं 400 त्रुटि के साथ जवाब देने के लिए 'अवैधअर्स [" रेफर्स पार्स नहीं कर सका "] का उपयोग कर सकता हूं। लेकिन यह नहीं समझता कि मेरे संदेश का क्या होता है ... – cies