Отправка HTTP-запроса

Elm:
Отправка HTTP-запроса

Как это сделать:

Хорошо, время кода. Elm отправляет HTTP-запросы, используя модуль Http. Вот быстрый пример для получения некоторого JSON:

import Http
import Json.Decode as Decode

type alias User =
    { id : Int
    , username : String
    }

userDecoder : Decode.Decoder User
userDecoder =
    Decode.map2 User
        (Decode.field "id" Decode.int)
        (Decode.field "username" Decode.string)

fetchUser : Cmd Msg
fetchUser =
    Http.get
        { url = "https://api.example.com/user/1"
        , decoder = userDecoder
        }
        |> Http.send UserFetched

type Msg
    = UserFetched (Result Http.Error User)

update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
    case msg of
        UserFetched (Ok user) ->
            ({ model | user = Just user }, Cmd.none)

        UserFetched (Err _) ->
            (model, Cmd.none)

Пример вывода, когда UserFetched является Ok user:

{ id = 1, username = "ElmerFudd" }

Глубокое погружение

Отправка HTTP-запросов не нова; это было основой веб-коммуникаций с 90-х годов. Elm упаковывает сложность в дружественный модуль Http, сосредотачиваясь на безопасности и простоте. В отличие от ранних времен, Elm абстрагирует запутанные части, такие как XMLHttprequest и разбор JSON. Альтернативы, такие как использование Fetch API или XMLHttpRequest напрямую в JavaScript возможны с портами, но встроенный в Elm способ поддерживает безопасность типов и чистоту вашего кода. Он обрабатывает побочные эффекты через его мощную архитектуру, не снижая надежности вашего приложения.

Смотрите также

Для более подробных объяснений и устранения неполадок, ознакомьтесь с этими ресурсами: