ทางธนาคารแห่งประเทศไทย หรือ Bank Of Thailand (BOT)
ได้เปิด BOT APIs ให้บริการข้อมูลต่าง ๆ ที่น่าสนใจดังนี้

  • อัตราแลกเปลี่ยน จำนวน 8 APIs
  • อัตราดอกเบี้ย จำนวน 12 APIs
  • ผลการประมูลตราสารหนี้ จำนวน 1 API

ดังนั้นมาลองใช้งานกันหน่อย
ว่าเป็นอย่างไรบ้าง ?
ใช้งานยากหรือง่ายอย่างไร ?
ในมุมมองของนักพัฒนาคนหนึ่ง

รายละเอียดทั่วไปของ API

BOT APIs เป็น REST APIs
โดยข้อมูลอยู่ในรูปแบบ JSON (JavaScript Object Notation)
ในแต่ละ API นั้นมีเอกสารอธิบายชัดเจน ตัวอย่างเช่น

  • คำอธิบาย
  • ความถี่ในการเปลี่ยนแปลงข้อมูล
  • เวลาในการเผยแพร่
  • ที่มาของข้อมูล
  • รายละเอียดเพิ่มเติม
  • API endpoint
  • Parameter ต่าง ๆ ที่จำเป็น ทั้งชื่อ ชนิดข้อมูล และ ตัวอย่าง
  • ข้อมูล parameter ที่จะได้รับ ฟังดูแล้วแปลก ๆ น่าจะเป็นข้อมูลที่ได้รับน่าจะเข้าใจง่ายกว่า !!
  • ตัวอย่างข้อมูล ในส่วนนี้ง่ายยากมาก น่าจะจัดรูปแบบให้ง่ายง่าย ๆ หน่อย
  • มีตัวอย่างการเขียน code ใช้งานทั้ง JavaScript และ Python แต่น่าจะใส่ format code สวย ๆ หน่อยนะ

ในส่วนนี้นักพัฒนาก็เขียน library ใช้งานสำหรับภาษาต่าง ๆ กันไหม ?

ตัวอย่างของข้อมูลที่ได้จาก API อัตราแลกเปลี่ยนถัวเฉลี่ยถ่วงน้ำหนักระหว่างธนาคาร (รายวัน)

มาดูโครงสร้างของข้อมูลกันหน่อย

ซึ่งดูแล้วข้อมูลไม่จำเป็นเยอะน่าดู
แต่คงเป็นเรื่องความน่าเชื่อถือของข้อมูล !!

APIs ต่าง ๆ จะส่ง response code เป็น 200 กลับมาเสมอ
โดยผู้ใช้บริการสามารถตรวจสอบผลการทำงาน
ผ่านข้อมูลใน result.success ว่าเป็น true หรือ false

  • true คือ ผลการทำงานถูกต้อง
  • false คือ ผลการทำงานไม่ถูกต้อง เช่น parameter ที่ส่งไปไม่ถูกต้อง

จากตัวอย่างข้างต้น เป็นผลการทำงานที่ถูกต้อง
ดังนั้นข้อมูลของอัตราแลกเปลี่ยนจะอยู่ใน result.data
ยังไม่พอในข้อมูลยังแบ่งออกเป็น 2 กลุ่มคือ

  1. data_header สำหรับคำอธิบายต่าง ๆ เช่นแหล่งที่มา และ วันเปลี่ยนแปลงล่าสุด
  2. data_detail สำหรับข้อมูลจริง ๆ

สิ่งที่น่าสนใจคือ ข้อมูลที่มีจุดทศนิยมจะมีจำนวน 7 หลักทั้งหมด !!

ในส่วนการทำงานผิดพลาด

จะมีผลการทำงานมาอยู่ที่ result.error แทน
ดังตัวอย่างใส่ข้อมูลวันที่ของ start_period ผิดรูปแบบที่กำหนด

โดยในส่วนของ error code ไม่มีอธิบายไว้ในหน้า website

  • ถ้าไม่ใส่ api-key หรือใส่ผิด ใน HTTP Header จะไม่มี error code
  • es001 คือ ไม่ใส่ข้อมูล เช่น Parameter: start_period must not be null
  • es002 คือ ข้อมูลวันเริ่นต้นอยู่หลังวันสิ้นสุด เช่น Parameter start_period must not be greater than end_period
  • es003 คือ รูปแบบข้อมูลผิด เช่น Parameter: start_period format must be yyyy-mm-dd

สุดท้ายแล้ว BOT API เป็นแหล่งข้อมูลที่น่าสนใจ

สามารถนำไปใช้ประโยชน์กันได้ดีเลยและน่าเชื่อถือได้

ปล. อย่าลืมอ่านเงื่อนไขการใช้บริการด้วยนะครับ
ยกตัวอย่างเช่น

  • ธนาคารแห่งประเทศไทยจะไม่รับผิดชอบต่อ ความถูกต้อง และความล่าช้าของข้อมูล
  • ยกเลิกการให้บริการข้อมูล BOT API ของธนาคารแห่งประเทศไทยแก่ผู้ใช้บริการเมื่อใดก็ได้
  • ผู้ใช้บริการยอมรับและตระหนักดีว่าธนาคารแห่งประเทศไทยจะไม่รับผิดชอบในความเสียหายใด ๆ ที่เกิดขึ้นหรืออาจเกิดขึ้นกับผู้ใช้บริการ จากบริการข้อมูล BOT API ของธนาคารแห่งประเทศไทย ไม่ว่าโดยเหตุประการใด

Reference Websites
https://iapi.bot.or.th/Developer?lang=th