2017-10-13 132 views
0

我试图创建一个Http.Request值:缺少Http.Request的参数是什么?

request : Http.Request 
request = 
    { verb = "POST" 
    , headers = 
     [ ("Origin", "http://elm-lang.org") 
     , ("Access-Control-Request-Method", "POST") 
     , ("Access-Control-Request-Headers", "X-Custom-Header") 
     ] 
    , url = url 
    , body = body 
    } 

的代码被嵌入在下面的功能:

tryRegister : Form -> (Result Http.Error JsonProfile -> msg) -> Cmd msg 
tryRegister form msg = 
    let 
     url = 
      baseUrl ++ "register" 

     body = 
      encodeRegistration form |> Http.jsonBody 

     request : Http.Request 
     request = 
      { verb = "POST" 
      , headers = 
       [ ("Origin", "http://elm-lang.org") 
       , ("Access-Control-Request-Method", "POST") 
       , ("Access-Control-Request-Headers", "X-Custom-Header") 
       ] 
      , url = url 
      , body = body 
      } 
    in 
     Http.send msg request 

我收到以下错误:

Type Http.Request has too few arguments. - Expecting 1, but got 0.

Http.Request缺少什么论点?

附录:

http://package.elm-lang.org/packages/evancz/elm-http/3.0.1/Http

回答

3

你的附录的链接是一个老版本中的HTTP包。新套件是elm-lang/http。 Request预期的类型参数是成功响应中使用的类型,在您的情况下,它应该是JsonProfile

2

evancz/elm-http软件包已过时,您可能实际上正在使用elm-lang/http,因此您正在查看错误的文档。

要使用elm-lang/http构造Http.Request,您需要调用Http.request函数并将它传递给描述请求的记录。 http://package.elm-lang.org/packages/elm-lang/http/1.0.0/Http#request

另外,你实际上不能从浏览器中设置的“原产地”的请求头,这意味着你将不再需要在所有设置任何头和可以只使用Http.post辅助函数http://package.elm-lang.org/packages/elm-lang/http/1.0.0/Http#post