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 רגילה עדיין היא הכי נפוצה ומתאימה לרוב הצרכים.