stdb-v2-api
< back to +main 
tags: #stdb #most

Authentication

ใช้ token ในการ authentication โดย token นั้นจะเป็น JWT - JSON Web Token
โดยจะสามารถรับ token ได้จาก
โดยจะต้องมี request เป็น POST และมี header Content-Type: application/json และ body เป็น
{"username": "ชื่อ user", "password": "รหัสผ่าน"}
หรือ
curl -X POST -H "Content-Type: application/json" -d '{"username": "ชื่อ user", "password": "รหัสผ่าน"}' http://www.serv.stdb.most.go.th/api-token-auth/
แล้วจะได้ response เป็น
{"token":"token ยาวๆๆ"}
ในกรณีที่ต้องการตรวจสอบว่า token นั้นยังใช้ได้หรือไม่สามารถตรวจสอบโดย POST มี body เป็น {"token":"token  
ยาวๆๆ"} header เป็น Content-Type: application/json ไปที่

http://www.serv.stdb.most.go.th/api-token-verify/
หรือ
curl -X POST -H "Content-Type: application/json" -d '{"token":"<TOKEN เดิม>"}' http://www.serv.stdb.most.go.th/api-token-verify/
ถ้าถูกต้อง ก็จะได้ token เดิมกลับมา
สำหรับ JWT นั้น ทางระบบได้มีการตั้งให้ token หมดอายุทุก 5 วันนับแต่เริ่มรับ token ครั้งแรก แต่ token จะยังสามารถไปขอ token ใหม่ได้ (ไม่ต้อง auth ด้วย user/password ใหม่) ภายใน 30 วัน โดยจะส่งเหมือนกับตอน verify แต่ใช้ url
http://www.serv.stdb.most.go.th/api-token-refresh/
หรือ
curl -X POST -H "Content-Type: application/json" -d '{"token":"<TOKEN เดิม>"}' http://www.serv.stdb.most.go.th/api-token-refresh/

API สำหรับ STDB


API ทั้งหมด จะใช้หลักการเดียวกัน โดย GET สามารถเรียกใช้โดยไม่ต้องมีการ authentication ส่วนการแก้ไข้ข้อมูลจะต้องมีการ authentication โดยเพิ่ม header เข้าไปในทุก request เป็น
Authorization: Bearer <valid JWT token>
ส่วนการใช้งาน API ก็เหมือนๆกับ REST API ทั่วๆไป คือ
  • GET ก็รับข้อมูลเป็นทั้ง list/item ตามแต่วิธิเรียก
  • รับเป็น list
[GET] http://www.serv.stdb.most.go.th/api/v2/instrument/
  • รับเป็น item ก็ใส่ id เข้าไปตามหลัง
[GET] http://www.serv.stdb.most.go.th/api/v2/researcher/9330/
  • POST เป็นการใส่ข้อมูลใหม่ ใส่ได้ทีละตัว รับทั้งเป็น form-data และ json ค่า return ก็จะเป็น 201 CREATED พร้อมทั้ง json ของข้อมูลนั้นๆ
[POST] http://www.serv.stdb.most.go.th/api/v2/instrument/
  • PUT เป็นการ update ข้อมูลเดิมที่มีอยู่ทั้งก้อน โดนใส่ข้อมูลทั้งหมดไปยัง item นั้นๆ เช่น
[PUT] http://www.serv.stdb.most.go.th/api/v2/researcher/9330/
  • PATCH ใช้ในการ update ข้อมูลบางส่วน โดยจะส่งเฉพาะข้อมูลที่ update เท่านั้น ระบบจะนำไปบันทึกส่วนที่ส่งไปใน object เดิมเอง
[PATCH] http://www.serv.stdb.most.go.th/api/v2/researcher/9330/
  • DELETE ก็เป็นการลบ object นั้นๆ
[DELETE] http://www.serv.stdb.most.go.th/api/v2/researcher/9330/
ในบางกรณีที่มี firewall/gateway/proxy ที่รองรับแค่ GET และ POST ไม่รองรับ method อื่นๆ ก็จะสามารถใช้ POST แทนได้ แต่ก็จะต้องใส่ใน header ด้วยว่า ต้องการจะทำ operation ไหน เช่น
X-HTTP-Method-Override: 'DELETE' 
เรื่อง basic ของ API ที่ต้องรู้ก็มีเพียงเท่านี้

รายละเอียดแต่ละ API ภาพรวม

สามารถเข้าดูได้ที่
http://www.serv.stdb.most.go.th/api/v2/
โดยจะมี
  • organization