我是elm的新手,我有一个登录api,它在hedears中返回一个JWT令牌
curl http://localhost:4000/api/login?email=bob@example&password=1234
Run Code Online (Sandbox Code Playgroud)
响应:
HTTP/1.1 200 OK
authorization: Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXyLp0aSI6ImefP2GOWEFYWM47ig2W6nrhw
x-expires: 1499255103
content-type: text/plain; charset=utf-8
success
Run Code Online (Sandbox Code Playgroud)
现在我试图编写一个函数,它将发送请求并从elm中的标头返回令牌
authUser =
Http.send "http://localhost:4000/api/login?email=bob@example&password=1234"
Run Code Online (Sandbox Code Playgroud)
我该如何以简单的方式做到这一点?
Cha*_*ert 11
为了从响应中提取标题,您必须使用Http.request该expectStringResponse函数,其中包括包含标题的完整响应.
该expectStringResponse函数接受一个Http.Response a值,因此我们可以创建一个接受标题名称和响应的函数,然后返回Ok headerValue或Err msg取决于是否找到标题:
extractHeader : String -> Http.Response String -> Result String String
extractHeader name resp =
Dict.get name resp.headers
|> Result.fromMaybe ("header " ++ name ++ " not found")
Run Code Online (Sandbox Code Playgroud)
这可以由请求构建器使用,如下所示:
getHeader : String -> String -> Http.Request String
getHeader name url =
Http.request
{ method = "GET"
, headers = []
, url = url
, body = Http.emptyBody
, expect = Http.expectStringResponse (extractHeader name)
, timeout = Nothing
, withCredentials = False
}
Run Code Online (Sandbox Code Playgroud)
这是一个ellie-app.com返回值content-type的示例作为示例.您可以替换"authorization"您的目的.
我可以谦虚地建议您查看我的 elm-jwt 库以及那里的get函数吗?
Jwt.get token "/api/data" dataDecoder
|> Jwt.send DataResult
Run Code Online (Sandbox Code Playgroud)
JWT 令牌通常需要作为Authorization标头发送,此函数可帮助您创建一个可以传递给Http.send或的请求类型Jwt.send
| 归档时间: |
|
| 查看次数: |
1384 次 |
| 最近记录: |