Elm:
ส่งคำขอ HTTP
วิธีการ:
โอเค, ถึงเวลาโค้ดแล้ว Elm ใช้โมดูล Http
ในการส่งคำขอ HTTP นี่คือตัวอย่างเพื่อดึง JSON บางส่วน:
import Http
import Json.Decode as Decode
type alias User =
{ id : Int
, username : String
}
userDecoder : Decode.Decoder User
userDecoder =
Decode.map2 User
(Decode.field "id" Decode.int)
(Decode.field "username" Decode.string)
fetchUser : Cmd Msg
fetchUser =
Http.get
{ url = "https://api.example.com/user/1"
, decoder = userDecoder
}
|> Http.send UserFetched
type Msg
= UserFetched (Result Http.Error User)
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
UserFetched (Ok user) ->
({ model | user = Just user }, Cmd.none)
UserFetched (Err _) ->
(model, Cmd.none)
ตัวอย่างข้อมูลเมื่อ UserFetched
เป็น Ok user
:
{ id = 1, username = "ElmerFudd" }
ดำดิ่งลึก
การส่งคำขอ HTTP ไม่ใช่เรื่องใหม่; มันเป็นหลักสูตรหลังการสื่อสารเว็บตั้งแต่ยุค 90’s Elm ห่อความซับซ้อนนี้ไว้ในโมดูล Http
ที่ใช้งานง่าย, โฟกัสที่ความปลอดภัยและความง่ายดาย ไม่เหมือนกับยุคแรกๆ, Elm แยกส่วนที่ยุ่งยากเช่น XMLHttprequest และการแปลง JSON Alternatives เช่นการใช้ Fetch API ของ JavaScript หรือ XMLHttpRequest โดยตรงเป็นไปได้ด้วย ports, แต่วิธีที่มีอยู่ใน Elm รักษาโค้ดของคุณให้ปลอดภัยและบริสุทธิ์ มันจัดการกับผลข้างเคียงผ่านสถาปัตยกรรมที่ทรงพลังโดยไม่ทำลายความน่าเชื่อถือของแอปพลิเคชันของคุณ
ดูเพิ่มเติม
สำหรับคำอธิบายและการแก้ไขปัญหาที่ละเอียดยิ่งขึ้น ดูที่ทรัพยากรเหล่านี้:
- เอกสารประกอบของ Elm สำหรับ HTTP: https://package.elm-lang.org/packages/elm/http/latest/
- การ Decode JSON ใน Elm: https://package.elm-lang.org/packages/elm/json/latest/
- คู่มือของ Elm ว่าด้วยคำขอ HTTP: https://guide.elm-lang.org/effects/http.html
- Elm Discuss สำหรับข้อมูลเชิงลึกจากชุมชน: https://discourse.elm-lang.org/