- Published on
3 ขั้นตอนเชื่อมต่อ API ด้วยภาษา Lua
- Authors
- Name
- Samiti
เกริ่น
การเขียนโปรแกรมเพื่อเชื่อมต่อ API ด้วยภาษา Lua เป็นทักษะที่มีประโยชน์สำหรับนักพัฒนาภาษา Lua ในแง่การพัฒนาเกมส์ และระบบฝังตัวซึ่ง Lua เก่งในด้านนี้เป็นเรื่องปกติ
สำหรับในบทความนี้จะนำผู้อ่านใช้ JSONPlaceholder ซึ่งเป็นการให้บริการ REST API ในรูปแบบออนไลน์ฟรี ไม่เสียค่าใช้จ่าย และเหมาะสำหรับใช้ทดสอบระบบ หรืองานต้นแบบ เป็นต้น
ในบทความนี้จะพาไปดูวิธีการเชื่อมต่อ APi จาก JSONPlaceholder และดึงข้อมูลออกมาแสดงผลด้วยภาษา Lua
อะไรคือ JSONPlaceholder
JSONPlaceholder เป็นเว็บไซต์สำหรับจำลองการใช้งาน REST API สำหรับการทดสอบและทดสอบงานต้นฉบับ โดยมีปลายทางการรับส่งข้อมูล (endpoint) ในหลากหลากรูปแบบข้อมูล เช่น posts, comments, albums, photos เป็นต้น จึงทำให้เหมาะสมกับการเรียนรู้และทดสอบระบบ
สิ่งที่ต้องมี
ก่อนที่เราจะเริ่มลงมือทำ ควรเตรียมพื้นฐานดังนี้
- พื้นฐานภาษา Lua
- การติดตั้ง Lua Enviroment ในเครื่อง
- ไลบลารี่ HTTP requests สำหรับ Lua จะนิยมใช้ LuaSocket หรือ http เป็นต้น
ขั้นตอน
- สร้างโปรเจคภาษา Lua
สร้างโฟลเดอร์งานใหม่ ตั้งชื่ออะไรก็ได้ จากนั้นด้านในโฟลเดอร์ในตั้งชื่อไฟล์ว่า main.lua
- ติดตั้ง LuaSocket
การเรียก HTTP requests เราจะใช้ LuaSocket หากยังไม่ได้ติดตั้งให้ใช้ Lua package manager ติดตั้งแทนได้เลย โดยใช้คำสั่ง
luarocks install luasocket
- การดึงข้อมูลจาก JSONPlaceholder
ภายใน main.lua ให้พิมพ์โปรแกรมคำสั่งด้านล่าง เพื่อดึง API จาก JSONPlaceholder
-- main.lua
local http = require("socket.http")
local json = require("dkjson")
local ltn12 = require("ltn12")
-- Function to fetch data from JSONPlaceholder API
local function fetch_data(url)
local response_body = {}
local res, code, response_headers, status = http.request {
url = url,
sink = ltn12.sink.table(response_body)
}
if code ~= 200 then
print("Error fetching data: " .. status)
return nil
end
local response_data = table.concat(response_body)
local data, pos, err = json.decode(response_data, 1, nil)
if err then
print("Error decoding JSON: " .. err)
return nil
end
return data
end
-- URL of the JSONPlaceholder API endpoint
local url = "https://jsonplaceholder.typicode.com/posts"
-- Fetch and display the data
local posts = fetch_data(url)
if posts then
for _, post in ipairs(posts) do
print("Title: " .. post.title)
print("Body: " .. post.body)
print("---")
end
end
คำอธิบายโค้ด
- การนำเข้าไลบรารี่ เรียกไลบรารี่ socket.http สำหรับ http request และ dkjson สำหรับจัดการข้อมูลประเภท JSON
- สร้างฟังชั่นสำหรับดึงข้อมูล ตั้งชื่อฟังชั่นชื่อว่า fetch_data เพื่อยิงข้อมูลผ่าน URL และตอบกลับข้อมูล
- การเรียกใช้ http.request ในฟังชั่น fetch_data เพื่อรวบรวมข้อมูลการตอบกลับไปยังตัวแปรที่ชื่อ response_body
- การจัดการข้อผิดพลาด เพื่อใดก็ตามที่เรียกข้อมูลผ่าน http แล้วเกิดปัญหาระหว่างการทำงาน ให้แสดงเนื้อหาข้อผิดพลาดในอยู่ในรูปแบบ JSON
- การเปลงข้อมูลจาก JSON เป็นข้อมูล Lua table ุ6. แสดงข้อมูล ทำการ Loop ข้อมูลในแต่ละ posts แล้วนำเสนอข้อมูลข้อมูลในรูปแบบ Title และ Body
สรุป
การเชื่อมต่อด้วยภาษา Lua สามารถเรียกใช้ LuaSocket และ dkjson จาก JSONPlaceholder ได้โดยตรง ซึ่งการจัดทำข้อมูลในบทความนี้ เพื่อเป็นการฝึกซ้อมการใช้ทักษะสำหรับการเรียกใช้งานข้อมูลผ่าน API ทำให้ดึงข้อมูลและแสดงผลข้อมูลออกมาใช้งานได้