我有两个处理程序,一个是GET,另一个是PUT:
getHotspotR :: Key Hotspot -> Handler Value
getHotspotR i = do
hotspot <- runDB $ get404 i
returnJson hotspot
putHotspotR :: Handler ()
putHotspotR = do
hotspot <- requireJsonBody
hid <- runDB $ insert $ hotspot
sendResponseCreated $ HotspotR hid 但我不知道该怎么做。如果我这么做:
/hotspot/#HotspotId HotspotR GET PUT它抱怨PUT处理程序有错误的通透性:
Couldn't match expected type `Key Hotspot -> HandlerT App IO res0'
with actual type `HandlerT App IO ()'
The function `putHotspotR' is applied to one argument,
but its type `Handler ()' has none但如果我宣布另一条路线:
/hotspot/#HotspotId HotspotR GET
/hotspot HotspotR PUT 它抱怨说我有一条重复的路线:
/hotspot/#HotspotId HotspotR GET
/hotspot HotspotR PUT
Foundation.hs:48:1:
Multiple declarations of `HotspotR'
Declared at: Foundation.hs:48:1
Foundation.hs:48:1发布于 2014-06-30 03:39:32
从逻辑上讲,这些资源并不相同,即使它们操纵实体。HotspotR操作一个单一的热点。HotspotsR操纵一组热点(例如,插入到该集合中)。
确保路线的名称不同。
/hotspots/ HotspotsR PUT
/hotspots/#HotspotId HotspotR GET然后相应修改您的put资源。
putHotspotsR :: Handler ()
putHotspotsR = do { ... }这将使您能够在今后做以下工作。
/hotspots/ HotspotsR GET PUT -- list all hotspots, insert a hotspot
/hotspots/#HotspotId HotspotR GET PATCH -- Get a hotspot, update a hotspot.https://stackoverflow.com/questions/24481517
复制相似问题