Elm:
Pobieranie strony internetowej
How to: (Jak to zrobić:)
W Elm downloadowanie strony może być wykonane za pomocą modułu Http
. Oto przykład prostego żądania GET:
import Http
import Json.Decode exposing (string)
type Msg
= GotText (Result Http.Error String)
getText : Cmd Msg
getText =
Http.get
{ url = "http://example.com"
, expect = Http.expectString GotText
}
-- To jest wywołane, gdy odpowiedź przychodzi
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
GotText (Ok text) ->
-- zrób coś z pobranym tekstem
(model, Cmd.none)
GotText (Err httpError) ->
-- obsłuż błąd
(model, Cmd.none)
Sample output może wyglądać tak:
-- W przypadku sukcesu:
GotText (Ok "Tutaj treść strony...")
-- W przypadku błędu:
GotText (Err Http.NetworkError)
Deep Dive (Dogłębna analiza)
W przeszłości Elm wykorzystywał elm-lang/http
, ale obecnie używa się elm/http
jako standardowego modułu do żądań HTTP. Alternatywą dla wbudowanych funkcji HTTP jest korzystanie z JavaScript’u poprzez porty.
Szczegóły implementacji to:
- Użycie
Http.expectString
, by zinterpretować odpowiedź jako tekst. - Dekodowanie JSON za pomocą
Json.Decode
dla uzyskania bardziej złożonych typów danych. - Bezpieczne obsługiwanie błędów poprzez typ
Result
.
Programowanie w Elm skupia się na czystości funkcji i niezmienności, co sprzyja tworzeniu przewidywalnych aplikacji webowych.