haskell 如何在Servant中访问http标头?

yks3o0rb  于 2022-11-30  发布在  Vant
关注(0)|答案(1)|浏览(125)

我有一个简单的带有rest api的servant应用程序:

type API = "items" :> Get '[JSON] [MyData]

app :: Application
app = serve api server

api :: Proxy API
api = Proxy

server :: Server API
server = getItems

getItems :: ExceptT ServantErr IO [MyData]
getItems = ......

startApp :: IO ()
startApp = run 1234 app

如何访问http头并根据条件返回特定的响应,例如http403?

eivnm1vs

eivnm1vs1#

使用服务器的Header(服务器文档)

type API = "items" 
           :> Header "Auth-token" Text 
           :> Get '[JSON] [MyData]

然后

handler :: Maybe Text -> ExceptT ServantErr IO [MyData]
handler (Just "secret-code") = right [mydata]
handler _                    = left $ err403 { errBody = "no access" }

相关问题