จะเขียน API Web service สักตัวเนี่ย ต้องรู้อะไรบ้าง

What is API

API ย่อมาจาก Application Programming Interface เป็นสื่อกลาง ที่คอยติดต่อสื่อสาร ระบบหนึ่งกับอีกระบบหนึ่ง

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

ซึ่ง เวลา คนเราจะคุยกันรู้เรื่องเนี่ย ก็ต้องคุยภาษาเดียวกันใช่ใหมครับ โปรแกรมก็เหมือนกัน ต้องมี ภาษากลาง ถึงจะคุยกันรู้เรื่องโดยตัวภาษากลางที่ผมรู้จัก ก็มี JSON , XML

WHY API

สมมุติเรามีข้อมูลรูปภาพของครอบครัวอยู่ ถ้าไม่มี API ใครก็สามารถเข้ามาดูได้ทั้งหมดเลย แต่ถ้าเราเอา API มาขั้นกลาง โดยกำหนดว่าให้ใครเข้ามาได้บ้าง และให้คนติดต่อผ่าน API เราก็สามารถเลือกได้ว่า อ๋อ คนนี้เพื่อนสนิท เราอยากให้เค้าเข้ามาดูได้ อีกคนใครไม่รู้จัก ไม่อ่ะ อย่านะ ไม่ให้เข้ามา ได้

What is JSON

JSON ย่อมาจาก JavaScript Object Notation

JSON มีโครงสร้างแบบ key : value

หลายคนอาจสงสัยเห็นว่าเป็น JavaScript ใช้ได้แต่กับภาษานี้หรือเปล่า คำตอบคือ ภาษาอื่นก็ใช้ได้นะครับ

เพราะ JSON ถูกยอมรับเป็นมาตราฐานหนึ่งไปแล้ว แต่รูปแบบในการเขียนโปรแกรมภาษาอื่นๆอาจจะต่างออกไป เเต่ก็รูปแบบก็ยังคงโครงสร้างเป็น แบบ key : value เหมือนเดิมครับ

โดยตัวอย่างนี้เป็น JSON ในภาษา javascript นะครับ

// {key : value}
var myJson = {
"name" : "bakatest"
"power" : 99
}

ตัวแปร myJson เก็บค่า object เอาไว้ เป็นรูปแบบ JSON นั่นเอง

เวลาจะเรียกใช้งาน value ที่อยู่ใน key ก็ง่ายๆครับแบบนี้ครับ

console.log(myJson.name)
//ผลลัพธ์ -> "bakatest"
console.log(myJson.power)
//ผลลัพธ์ -> 99

ข้อสังเกตุ

  • key name ผมได้ใส่ value เป็น “bakatest” String นั่นเอง
  • key power ผมได้ใส่ value เป็น 99 Integer นั้นเอง
    ซึ่งตรงนี้ JSON นั้นมี data type (ชนิดของข้อมูล) แนะนำให้อ่านเพิ่มเติม เกี่ยวกับ JSON นะครับได้ใช้บ่อยแน่นอน

เพิ่มเติม http://www.json.org/

Why JSON

JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate.

ข้อความจาก http://www.json.org/

ตามนี้ข้างบนเลยครับทำให้เรา เข้าใจง่ายขึ้น และใช้งานง่ายด้วย ในทางโปรแกรมก็เข้าใจง่ายด้วย(อาจจะแปลผิดนะครับ ใคร เมพๆ ช่วยผมที .^^ )

It is easy for humans to read and write. It is easy for machines to parse and generate.
เครื่องจักร (machine) ก็อ่านและสร้าง JSON ได้ง่ายด้วยครับ

Woratana Perth ขอบคุณสำหรับคำแปลที่เข้าใจง่ายครับผม

HTTP (Hypertext Transfer Protocol)

ทำเว็บก็ต้องมีการสือสารกัน ระหว่าง Server กับ Client ใช่ใหมครับก็ได้มีมาตราฐานการสื่อสารเช่นกันครับ

โดยรูปแบบการทำงานหลักๆจะเป็นนี้ อันนี้สำคัญนะครับ จำขึ้นให้ใจเลย

[ Server ] <------request--------  [Client]
[ Server ] -------response-------> [Client]

client ได้ส่งคำขอไปยัง server โดยเราจะเรียก request
server ได้รับคำขอก็ได้ตอบกลับ ไปยัง client โดยเราจะเรียกว่า response

ยกตัวอย่างเช่น สิ่งที่ใกล้ตัวเราสุดๆๆ เวลาเราพิมพ์ www.google.com ใน browser

[ Server ] <---request www.google.com--------  [Client Web browser]
[ Server ] ----response หน้าเว็บ---------------> [Client Web browser]

เรา request เพิ่อขอหน้าเว็บนั่นเอง และ server ก็ตอบกลับโดยส่งหน้าเว็บ html มาให้เรานั่นเอง

แล้ว API อยู่ใหนล่ะ

[ Server API ] <------request ชื่ออะไรครับ -----------  [Client]
[ Server API ] -------response ชื่อ bakatest -------> [Client]

โดย Client request มาว่าถามว่า “ชื่ออะไรครับ” API ที่ Server ได้รับคำถามก็เริ่มทำการประมวลตามโปรแกรมที่เราได้เขียนเอาไว้ ก็ตอบกลับไปว่า “ชื่อ bakatest”

นอกจาก Server คุยกับ Client เเล้ว Server ก็ยังคุยกับ Server ได้ด้วยแบบนี้

[ Server API ] <------request ชื่ออะไรครับ -----------  [Server API 2]
[ Server API ] -------response ชื่อ server 1 -------> [Server API 2]

ซึ่งแน่นอน เวลาเราส่ง request และรับ response จะเป็น รูปแบบ JSON นั่นเองนั่นเป็นเหตุผลว่าทำไม JSON ถึงสำคัญ รู้ไว้ไม่เสียหายครับ

HTTP REQUEST METHODS

และสุดท้าย การบ้าน ใครเข้าใจเรื่องนี้ ก็เริ่มเขียนบทความเรื่องนี้แชร์ให้คนอื่นเลยครับผม แชร์มาให้ผมอ่านด้วยนะ :)

https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods

*HTTP STATUS CODE

Pasupol Bunsaen พี่คนนี้แนะนำมา -> เอ๊ะแล้วมันคืออะไร ล่ะเจ้า http status code ยกตัวอย่าง เช่น เวลาคนไทยเจอกัน ก็จะยกมือไหวกันใช่ใหมฮ่ะ ไม่ว่าจะเป็น คุณครู ผู้ใหญ่ ซึ่งสิ่งนี้แสดงถึงการทักทาย หรือ ความเคารพ เช่นกัน ซึ่งแน่นอน เมื่อเกิดเหตุการณ์แบบนี้ เราก็จะเข้าใจอัตโนมัติ ว่าการไหวคืออะไร เป็น มาตราฐาน

http status code ก็เช่นกัน ผมเชื่อ ว่าทุกคนที่ใช้ อินเตอร์เน็ต ต้องเคยเห็นสิ่งนี้

เเล้วเราก็รู้ว่า เว็บที่เราเข้าไป ในหน้านั้น มันไม่มีของที่เราตามหา เจ้า 404 นี่เเหละหนึ่งในรหัส http status code ครับผม และยังมีรหัสอื่นๆอีก

แล้วเจ้า http status code จะใช้ตอนใหนล่ะ​ ?

เมื่อเกิด response ครับ

[ Server API ] <------request ชื่ออะไรครับ -----------  [Client]
[ Server API ] -------response ชื่อ bakatest -------> [Client]
status code 200 ok จ้า

จากในตัวอย่าง http status code 200 เป็นสถานะปกติ

ซึ่งยังมี status code อื่นๆเยอะมาก อ่านเพิ่มเติม WIKI HTTP STATUS CODE < - คลิกที่นี่