rest - 如何访问 Servant 中的 http header ?

标签 rest http haskell http-headers servant

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

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 header 并返回特定响应,例如 http403?

最佳答案

使用 Servant 的 Header ( Servant Docs )

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" }

关于rest - 如何访问 Servant 中的 http header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36307378/

相关文章:

http - 哪个开源负载均衡器支持 SPDY?

haskell - 打印类型签名列表

rest - 使用现有 "id"字段索引 Elasticsearch 文档

c# - Web API 未返回任何数据结果

Java HttpPost 正文 Apache 4.3.2

haskell - 在 Haskell 中使用管道符号定义运算符

haskell - Haskell 中的类型类行为

javascript - 原型(prototype) RPC 和 REST

rest - 无法使用 Express API 发出 POST 或 GET 请求

node.js - 使用 NTLM 更新 Sharepoint