Elm:
Å sende en HTTP-forespørsel
Hvordan:
Elm-koden under viser hvordan du sender en HTTP GET-forespørsel og håndterer svaret:
module Main exposing (..)
import Browser
import Http
import Json.Decode as Decode
type alias Model =
{ responseText : String }
initialModel : Model
initialModel =
{ responseText = "" }
type Msg
= GotText (Result Http.Error String)
update : Msg -> Model -> Model
update message model =
case message of
GotText (Ok text) ->
{ model | responseText = text }
GotText (Err _) ->
model
view : Model -> Html.Html Msg
view model =
Html.text model.responseText
-- Sender en HTTP GET-forespørsel
sendGetRequest : Cmd Msg
sendGetRequest =
Http.get
{ url = "https://api.example.com/data"
, expect = Http.expectString GotText
}
-- Starter applikasjonen og sender forespørselen
main : Program () Model Msg
main =
Browser.element
{ init = \_ -> ( initialModel, sendGetRequest )
, update = update
, view = view
, subscriptions = \_ -> Sub.none
}
Kjører du dette, vil programmet ditt be om data fra https://api.example.com/data
og vise det som tekst.
Dypdykk
HTTP-forespørsler i Elm handler om renhet og sikkerhet. Forespørsler er sideeffektfrie, og Elm tvinger håndtering av både suksess og feil. Historisk sett er Elm’s HTTP-funksjoner inspirert av funksjonelle programmeringsidealer. Alternativer til Elm for HTTP-kommunikasjon inkluderer bruk av JavaScript gjennom “ports”.
HTTP-forespørsler er håndterbare ved å sette opp Http.expectWhatever
for å dekode svarene. Elm 0.19 introduserte Http.expectString
som en enkel måte å få rå tekst. For kompleks data er det Http.expectJson
med en Decoder
.
Tilstandene oppdateres rent. Alle svar går gjennom update
-funksjonen, hvor du bestemmer hva som skal skje med den mottatte informasjonen. Elm er streng på typene som flyter gjennom systemet, og enhver feil ved utføring av en HTTP-forespørsel må håndteres.