Elm 在浏览器网络中获取失败Http.error显示响应

Elm 在浏览器网络中获取失败Http.error显示响应,elm,Elm,我正在探索ELM并尝试访问web api。我遵循了这个原则 我能够点击我的服务并得到响应(显示在浏览器网络选项卡中),但故障代码部分正在执行elm更新 实施 ---Model type alias Model = { message : String, } model:Model model = { message = "Hello" } --update postRequest : Http.Request postRequest =

我正在探索ELM并尝试访问web api。我遵循了这个原则

我能够点击我的服务并得到响应(显示在浏览器网络选项卡中),但故障代码部分正在执行elm更新

实施

---Model 
type alias Model =
    { 
      message : String,
    }

model:Model
model = {
    message = "Hello"
    }


--update


postRequest : Http.Request
postRequest =
    { verb = "POST"
    , headers =
        [("Content-Type", "application/json")
        ]
    , url = "http://xyz/events/list"
    , body = Http.string """{ "domainId": 1 }"""
    }

getEventList: Cmd Msg
getEventList = 
      Task.perform Messages.FetchFail Messages.FetchSucceed (Http.fromJson decodeString (Http.send Http.defaultSettings postRequest))



update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
    case msg of
        Messages.NoOp ->
            ( model, Cmd.none )
        Messages.FetchSucceed xy->
            ({model| message = "success"},Cmd.none)
        Messages.FetchFail _->
            ({model |message = "fail"} ,Cmd.none)
API响应:

{   "message": "",   "data": [
    {
      "eventId": 104,
      "title": "private Events",
      "description": "abc",
      "businessId": 51,
      "businessTitle": "VampireDA_Adda",
      "startDate": "2016-07-08" 
    },
    {
      "eventId": 107,
      "title": "Event weekly Midnight",
      "description": "xyz",
      "businessId": 44,
      "businessTitle": "Spanish Scotch",
      "startDate": "2016-07-08"          

    }] }
如果我有什么错误,请帮助我


以及如何将json解码到模型(用响应json填充模型)?

您可能会收到错误,因为解码不起作用。但首先要试着习惯管道

Http.send Http.defaultSettings postRequest
|> Http.fromJson decodeString
|> Task.perform Messages.FetchFail Messages.FetchSucceed
要解码,你需要一张Elm唱片

type alias DataItem = 
    { eventId: Int
    , title: String
    , description : String
    , businessId : Int
    , businessTitle : String
    , startDate: String
    }
解码器将看起来像

dataDecoder = 
    object6 DataItem
    ("eventId" := int)
    ("title" := string)
    ("description" := string)
    ("businessId" := int)
    ("businessTitle" := string)
    ("startDate" := string)

decoder = at ["data"] (list dataDecoder)
解码器需要一点时间来适应,因此我创建了一个网站来帮助您练习: