Elm:
שליחת בקשת HTTP

איך לעשות:

ב-Elm, שליחת בקשת HTTP דורשת שימוש במודול Http. דוגמה בסיסית:

import Http
import Json.Decode as Decode

type Msg
    = GotData (Result Http.Error String)

getData : Cmd Msg
getData =
    Http.get
        { url = "https://api.example.com/data"
        , expect = Http.expectString GotData
        }

type alias Model = 
    { data : String
    , error : String
    }

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

        GotData (Err _) ->
            ({ model | error = "Failed to fetch data." }, Cmd.none)

תוצאת דוגמה (Model עדכני):

{ data = "נתונים מהשרת", error = "" }

עיון עמוק

בעבר, שליחת בקשות HTTP בכל שפת תכנות הייתה כרוכה בשימוש ב-APIs נמוכים יותר כמו XMLHttpRequest ב-JavaScript. Elm מפשטת זאת על ידי מידול של בקשות ותגובות HTTP והפיכתם לבטוחים לטיפוס. עבור ניתוח הג’ייסון (JSON), Elm משתמשת במודול Json.Decode כדי להבטיח שהנתונים שמתקבלים תואמים לצורה אותה אנו מצפים לה. קיימים גם שיטות אלטרנטיביות כמו GraphQL, אבל בקשת HTTP רגילה עדיין היא הכי נפוצה ומתאימה לרוב הצרכים.

ראה גם