Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

สร้าง RESTFul API ด้วยภาษา Elixir

$
0
0

ช่วงวันหยุดว่าง ๆ ลองเขียนภาษาใหม่ ๆ ดูหน่อย
พอดีไปเจอตัวอย่าง code ภาษา Elixir แล้วชอบ เลยต้องลอง
คิดว่าน่าจะลองหาอะไรทำดูหน่อย
ตั้งโจทย์ว่า จะลองทำ RESTFul API แบบง่าย ๆ ทำการส่งผลกลับมาในรูปแบบของ JSON
จึงทำการบันทึกผลการลองครั้งนี้ไว้ดังนี้

ขั้นตอนที่ 1 ทำการติดตั้ง Elixir 1.8.2

ในส่วนนี้ใช้งานผ่าน Docker ด้วย Image Elixir 
พบว่าขนาดใหญ่มาก ๆ ถึง 1.08 GB !!!
โหดร้ายต่อการเริ่มมาก ๆ

ขั้นตอนที่ 2 ลองสร้าง project เล่นชื่อว่า hello

[gist id="9b6601f4d9c959698c67d00581a7f9c4" file="1.txt"]

สิ่งที่ต้องการคือ สร้าง RESTFul API + JSON  ซึ่งจะใช้งาน library ดังนี้

  • Cowboy เป็น HTTP framework ที่เล็ก ๆ เพราะว่าไม่ต้องการอะไรมากมาย
  • Poison สำหรับการจัดการข้อมูลในรูปแบบ JSON

ทำการเพิ่ม library เข้าไปใน project ด้วยการแก้ไขไฟล์ mix.exs

[gist id="9b6601f4d9c959698c67d00581a7f9c4" file="mix.exs"]

ปัญหาที่เจอคือ ไม่สามารถใช้งานผ่าน Docker Image ปกติได้
ต้องทำการติดตั้งบางอย่างก่อน จึงทำการ custom image นิดหน่อยดังนี้

[gist id="9b6601f4d9c959698c67d00581a7f9c4" file="Dockerfile"]

ขั้นตอนที่ 3 Elixir เตรียมเรื่องของการทดสอบและ formatting code มาให้

ในส่วนนี้ชอบมาก ๆ เพราะว่ามีมาให้เลย

[gist id="9b6601f4d9c959698c67d00581a7f9c4" file="2.txt"]

ขั้นตอนที่ 4 มาสร้างระบบงานที่ต้องการ

จากที่อ่านเอกสารของ Cowboy มานั้น
การใช้งานก็ไม่ยากเท่าไร
แต่ต้องการแยกส่วนการทำงานชัดเจนและ configuration ได้ง่าย
จึงแบ่งเป็นส่วนงานดังนี้

  • Endpoint สำหรับกำหนด endpoint ของ API ต่าง ๆ
  • Application สำหรับกำหนดจุดเริ่มต้นการทำงานของระบบ เพื่อ load สิ่งต่าง ๆ ที่ต้องใช้งานในการ start service ของระบบงาน
  • มี config สำหรับการใช้งานในแต่ละส่วนเช่น dev, test และ prod เป็นต้น ซึ่ง Elixir project มีให้แล้ว แค่ใช้ให้ถูกเท่านั้นเอง ตรงนี้ไม่ง่าย

ส่วนที่ 1 Endpoint

[gist id="9b6601f4d9c959698c67d00581a7f9c4" file="endpoint.ex"]

ส่วนที่ 2 Application

[gist id="9b6601f4d9c959698c67d00581a7f9c4" file="application.ex"]

เมื่อทุกอย่างเตรียมพร้อมแล้ว

ก็มากำหนดจุดเริ่มต้นของการทำงานคือ Application ในไฟล์ mix.exs ดังนี้

[gist id="9b6601f4d9c959698c67d00581a7f9c4" file="mix2.exs"]

ขั้นตอนที่ 5 ทำการ compile และ run ระบบงาน

ด้วยคำสั่ง

[gist id="9b6601f4d9c959698c67d00581a7f9c4" file="3.txt"]

ได้ลองเรียนรู้ภาษา Elixir มานิดหน่อย
ต่อไปจะได้ลองลงรายละเอียดของภาษาต่อไป
มันสนุกดีนะ

Source code ตัวอย่างอยู่ที่ GitHub::Up1


Viewing all articles
Browse latest Browse all 1997

Trending Articles