วิธีเรียกใช้ข้อมูลจาก API ของธนาคารแห่งประเทศไทยด้วย C# .NET

Voraphol Chitvibool
readmoreth
Published in
3 min readJan 8, 2019

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

อันที่จริงเรื่องนี้สามารถทำได้โดยไม่ยากเย็นนัก เนื่องจากทาง BOT เองก็ได้เปิด API ให้นักพัฒนาเขียนแอพพลิเคชั่นไปเชื่อมต่อและดึงข้อมูลมาใช้งานมาได้ซักพักแล้ว แถมยังมีโค้ดตัวอย่างการเรียกใช้ API ให้พร้อมอีกด้วย

อย่างไรก็ตามเมื่อได้ลองเขียนโปรแกรมเรียกใช้ข้อมูล BOT API ด้วย C# .NET (ซึ่งเป็นเทคโนโลยีที่ผมค่อนข้างคล่องมือและเป็น requirement ของระบบข้างต้นอย่างหนึ่ง) ก็พบว่ามีรายละเอียดบางอย่างที่ต้องศึกษาเพิ่มเติมนอกเหนือจากข้อมูลที่ทาง BOT แจ้งให้ทราบบนหน้าเว็บอยู่พอสมควร จึงลงมือเขียนบทความนี้ขึ้นมาเพื่อบันทึกสิ่งที่ทำไปตั้งแต่สมัครใช้บริการไปจนถึงลงมือเขียนโปรแกรม ก็หวังว่าจะเป็นประโยชน์ท่านผู้อ่านที่สนใจจะใช้งาน BOT API นะครับ

การสมัครใช้บริการ BOT API

  1. เริ่มจากคลิกที่ลิงก์นี้เพื่อเข้าสู่หน้าสถิติและบริการข้อมูลบนเว็บไซต์ธนาคารประเทศไทย จากนั้นคลิกที่เมนูบริการข้อมูล BOT API เพื่อไปยังหน้า portal ซึ่งเป็นที่ๆ เราจะได้สมัครบริการ, ลงทะเบียนแอพพลิเคชั่นที่จะเข้าถึงข้อมูล API, ศึกษาตัวอย่างการใช้งาน จนไปถึงทดลองใส่ค่าต่างๆ เพื่อดูผลลัพธ์ของ API ในหน้าเดียว
หน้าแรกบน API portal ของธนาคารแห่งประเทศไทย

2. เมื่อเข้าไปถึงหน้า portal เราจำเป็นต้องสร้าง account ให้เรียบร้อยก่อน จึงจะสามารถลงทะเบียนแอพพลิเคชั่นที่จะใช้งาน API และทดลอง API บนหน้า portal ได้ ตรงนี้ไม่ได้มีอะไรมากจึงขอไม่ลงรายละเอียดนะครับ

3. ขั้นตอนต่อไปคือการลงทะเบียนแอพพลิเคชั่น ให้ไปที่หน้า Apps คลิกที่ปุ่ม Create new App กรอกรายละเอียดต่างๆ ของแอพลงไป เมื่อลงทะเบียนเรียบร้อย เราจะได้ Client Secret และ Client ID มาให้จดเก็บไว้

ลงทะเบียนแอพเรียบร้อยแล้วจด Client Secret และ Client ID เก็บไว้ก่อน

4. ต่อจากนั้นให้เข้าไปเลือกบริการที่ต้องการใช้จากหน้า API Products (ในตัวอย่างนี้คือ Exchange Rate 2.0.1 ภายในมี API ให้ใช้งานสองตัว) คลิกที่ปุ่ม Subscribe แล้วเลือกแอพพลิเคชั่นที่เราเพิ่งลงทะเบียนไป

Subscribe API Products กับแอพที่เพิ่งลงทะเบียนไป

5. ที่แถบข้างซ้ายคลิกที่ API ที่จะใช้งาน เพื่อเข้าไปศึกษารายละเอียดต่างๆ ของ API เช่นความถี่และเวลาอัพเดตข้อมูล, รูปแบบ parameter ที่ API รับ, ตัวอย่างการเรียก request ในภาษาต่างๆ และตัวอย่าง response ในรูปแบบ JSON (ในตัวอย่างนี้คือ Average Exchange Rate รายวัน)

ศึกษารายละเอียดต่างๆ ของ API ได้ในหน้านี้

6. และหากเราต้องการทดสอบ API ก่อนเริ่มลงมือเขียนโปรแกรมก็สามารถทำได้ที่ แถบตัวอย่างโค้ดทางด้านขวา เลื่อนหน้าจอลงมานิดนึงจะมีช่อง Try this operation ให้ได้ทดลองกรอก parameter และ Call operation เพื่อดูผลลัพธ์

คลิกที่ Call operation เพื่อดูผลลัพธที่ได้จาก API

อ่านมาถึงตรงนี้เชื่อว่าท่านที่คุ้นเคยกับ REST API น่าจะเขียนโปรแกรมกันต่อเองได้ แต่เพื่อความสมบูรณ์ของบทความนี้ที่ตั้งใจจะให้เป็นบันทึกการเขียนโปรแกรมเรียกใช้ข้อมูล BOT API ด้วย C# .NET ก็ขอลงเรื่องโปรแกรมมิ่งต่อกันเลย

เตรียมพร้อมก่อนลงมือสร้างโปรเจ็กต์

สิ่งที่ควรรู้อย่างแรกของการเรียกใช้ BOT API ด้วยภาษา C# จากการศึกษาตัวอย่างการเรียก request พบว่าโค้ดของทาง BOT เลือกใช้ไลบรารี่ภายนอกที่มีชื่อว่า RestSharp มาทำหน้าที่เป็น REST client (ช่วยส่ง request / รับ response จาก API) ดังนั้นถ้าต้องการก็อปโค้ดตัวอย่างมาใช้งาน จำเป็นจะต้องติดตั้งไลบรารี่ดังกล่าวลงในโปรเจ็กต์ของเราก่อน

สิ่งที่ควรรู้อย่างที่สองคือมาตรฐานการเชื่อมต่อของ API ตัว Exchange Rate 2.0.1 ที่รองรับเฉพาะ TLS 1.2 เท่านั้น อันนี้เป็นไปตามเทรนด์ของวงการ security ที่เพิ่งจะยกเลิกมาตรฐานเก่าอย่าง SSL/TLS 1.0 ไปเมื่อเดือนมิถุนายนปี 2018

ส่งผลต่อการเลือกใช้ .NET ซึ่งจะรองรับ TLS 1.2 บนเวอร์ชั่นใหม่ๆ เท่านั้น ดังนั้นจึงควรสร้างโปรเจ็กต์ที่ใช้ .NET Framework 4.6 ขึ้นไป หรือ .NET Core ไปเลย

ลิงก์อ้างอิงและวิธีแก้ไขในกรณีที่ไม่สามารถปรับไปใช้ .NET เวอร์ชันใหม่ได้

ข่าวที่เกี่ยวข้องไว้อ่านเป็นข้อมูลสำหรับการวางแผนรองรับ TLS ในอนาคต

เริ่มสร้างโปรเจ็กต์และลงมือเขียนโปรแกรม

  1. เปิด Visual Studio ขึ้นมาสร้างโปรเจ็กต์ใหม่โดยเลือกใช้ .NET Framework 4.6 ขึ้นไปหรือ .NET Core
  2. คลิกขวาที่ Project จากนั้นเลือก Manages NuGet Packages… เพื่อติดตั้งไลบรารี่ที่ต้องการด้วย NuGet
ติดตั้งไลบรารี่บนโปรเจ็กต์ด้วย NuGet เพียงแค่คลิกขวาเพื่อเรียกเมนู

3. ค้นหา RestSharp ในหน้า Browse ของ NuGet Package Manager จากนั้นคลิกที่ Install (ภาพตัวอย่างใช้ Visual Studio 2017)

ค้นหาและติดตั้งไลบรารี่ RestSharp ด้วย NuGet

4. ลงมือเขียนโปรแกรมตามโค้ดตัวอย่างข้างล่าง ผมแถมโค้ดในส่วนที่เป็นการกำหนด proxy, การเช็ก response status code และการกำหนด TLS 1.2 สำหรับ .NET Framework 4.5 มาให้ด้วย

อ๋อ อย่าลืมใส่ using RestSharp; ที่หัวโปรแกรมนะครับ

โค้ดข้างต้นมีสิ่งที่เราควรสังเกตและแก้ไขดังนี้

  • พารามิเตอร์ start_period และ end_period ซึ่งเราต้องกำหนดเป็นวันที่ในฟอร์แมท YYYY-MM-DD เพื่อเลือกช่วงข้อมูลที่ต้องการ
  • พารามิเตอร์ currency ที่จะต้องกำหนดไว้หากต้องการระบุสกุลเงิน (ถ้าไม่ใส่จะเป็นการดึงอัตราแลกเปลี่ยนมาทุกสกุล)
  • header ที่มีชื่อว่า x-ibm-client-id ให้แทนค่า “REPLACE_THIS_KEY” ด้วย Client ID ที่ได้จากการลงทะเบียนแอพ
  • เนื้อข้อมูลที่ได้จาก BOT API หลังจากดึงข้อมูลมาเรียบร้อยแล้ว จะถูกเก็บไว้ในตัวแปร reponse.Content ในรูปแบบ JSON

มาถึงจุดนี้เราจะได้ผลลัพธ์ที่ต้องการเป็นที่เรียบร้อย สำหรับขั้นตอนถัดไปก็มักจะเป็นการ deserialize เนื้อข้อมูลที่อยู่ในรูปแบบ JSON เพื่อนำข้อมูลไปใช้งานต่อตามวัตถุประสงค์ของโปรแกรมครับ

--

--