Elm:
Wysyłanie żądania HTTP

How to / Jak to zrobić:

import Http
import Json.Decode as Decode

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

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

fetchUser : Cmd Msg
fetchUser =
    Http.get
        { url = "https://api.example.com/users/1"
        , expect = Http.expectJson GotUser userDecoder
        }

type Msg
    = GotUser (Result Http.Error User)

-- Elm Main Update function and subscriptions would be here

Sample Output:

GotUser (Ok { id = 1, name = "John Doe" })

Deep Dive / Szczegółowa analiza:

Wysyłanie zapytania HTTP w Elmie sięga czasów Elm 0.18, kiedy to funkcjonalności te zostały znacznie uproszczone. Elm 0.19 dalej ulepsza te procesy, zapewniając silne typowanie i bezpieczeństwo w użyciu.

Elm używa Cmd do obsługi efektów ubocznych, takich jak zapytania HTTP, co pozwala na izolację efektów od czystych funkcji. Możesz użyć Http.get, Http.post i innych funkcji z modułu Http, by rozmawiać z serwerami.

Co więcej, zapytania HTTP w Elm korzystają z systemu dekoderów JSON (takich jak userDecoder w powyższym przykładzie), które pozwalają na bezpieczne i predyktywne parsowanie odpowiedzi serwera.

Alternatywą dla HTTP w Elm jest WebSockets dla real-time aplikacji, ale to całkiem inna historia.

See Also / Zobacz również: