รู้จักกับ API
What is API & What is it used for
ต้องเข้าใจก่อนว่า ข้อมูลต่างๆที่เราเห็นในแอปพวก Facebook, Instagram, TikTok มันไม่ได้โดนเก็บไว้ในแอปทั้งหมด (ไม่งั้นหนักเครื่องแย่) เขาเก็บไว้ข้างนอกกัน เวลาจะใช้ตอนจะใช้ ก็ไปขอ Web service ที่แอปหรือเว็บนั้นเขียนเอาไว้ เจ้า Web services นี่แหละ นับว่าเป็น API
API (Application Programming Interface) เป็น application ไว้คอยให้บริการต่าง ๆ เช่น ขอดูข้อมูล, ติดต่อ API ตัวอื่น, ดึงเอา component ที่ถูกสร้างไว้แล้วมาใช้ในเว็บเรา (อย่างปุ่มแชทของ messenger ที่ดึงมาแปะไว้ในหน้าเว็บเราได้) หรืออื่น ๆ
ถ้าไม่เห็นภาพ นึกถึงเราไปหาซื้อกุ้ง เราอยากรู้ว่ากุ้งร้านนี้มีกี่ตัว เราเลยไปถามพ่อค้า ในที่นี้ เราเป็น client พ่อค้าคือ API ส่วนข้อมูลว่ากุุ้งร้านนี้มีกี่ตัว ก็เป็นข้อมูลจาก API ที่เราขอไป
อ่าว แต่เราไปขอเองตรง ๆ จาก database ก็ได้นี่ ใช้ API ให้วุ่นวายทำไม ? ช้าก่อน มันมีเรื่องที่ต้อง concern อีกเยอะแยะ อย่างแรกเลยคือเรื่อง privacy API มันเลือกได้ว่าเราให้ข้อมูลกับใครได้บ้าง เราคงไม่เดินไปดูหลังร้านกุ้งแล้วนับเองว่าร้านนี้มีกุ้งกี่ตัวใช่ไหมครับ (ไม่งั้นโดนเจ้าของร้านไล่ตีตาย) เวลาขอ เราเลยไม่ขอเองตรง ๆ เราขอผ่าน API นี่แหละ
แล้วก็มีการใช้ประโยชน์เชิงพาณิชย์ได้ด้วย อย่างเราเขียน API มา แล้วถ้ามีคนอยากมาขอใช้ ก็เก็บเงินซะเลย มันคือการซื้อขายสิทธิ์เข้าถึงนี่แหละ แต่ของฟรีก็มีนะ เขาเรียก Open API
API รูปแบบยอดนิยมที่ใช้กัน เขาเรียกว่า REST API เดี๋ยวจะมาเล่าให้ฟังว่าชื่อเสียงเรียงนามมันเป็นยังไง :)
REST API
มันสร้างมาด้วย HTTP protocol ดังนั้นอะไรที่ HTTP protocol ทำได้ REST API ทำได้
จุดเด่นเรียบง่ายเข้าใจง่ายด้วย Concept ของ HTTP protocolส่งข้อมูลกันแบบ request / responseไม่ซับซ้อน ใช้งานง่าย
ข้อสังเกตส่งข้อมูลได้แค่แบบ request / responseต้องรู้ URL ของ API ที่ชัดเจนในการใช้งานต้องเลือกให้ HTTP Method ให้เข้าใจสื่อสารตรงตามธรรมเนียมเพื่อให้คนอื่นเข้าใจได้ง่าย
Method ต่างๆที่ใช้ในการส่งข้อมูลก็จะเหมือนกับใน HTTP Method เลยคือGETRRetrieve รับข้อมูลPOSTCCreate เพิ่มข้อมูลPUTUUpdate แก้ไขข้อมูลDELETEDDelete ลบข้อมูล
เรียกรวมๆกันว่า CRUD หลักเราก็จะใช้ CRUD พวกนี้เป็นซะส่วนใหญ่ เรามาดูวิธีการใช้ CRUD เหล่านี้ในการส่งข้อมูล API กันเถอะ
GETเรียกผ่าน URL เช่นhttps://api.genderize.io/?name=lucแล้วเราก็ได้ของมูลของ name = luc ออกมา
POSTเรียกผ่าน URL เหมือนกัน แต่จะไม่มี query ขึ้นต่อจาก url ไป แต่จะไปอยู่ใน body แทน จากในรูปเราส่ง key name ที่มี value google เข้าไป จะเห็นว่าส่งข้อมูลผ่าน body
ทีนี้ API มันมีอีกหลายแบบ เดี๋ยวจะพาไปดู ว่าแบบอื่น ๆ แต่ละแบบมันเป็นยังไง แล้วใช้ต่างกันยังไงบ้าง
Soap
Meaning ของ Soap คือการแยก logic ต่างๆของ Application ออกมาเป็น service และนำมาใช้
จุดเด่นสามารถนำไปใช้ใน protocol ไหนก็ได้มีความปลอดภัยด้าน security ในระดับหนึ่งอธิบาย service ที่แยกๆด้วย WSDL (Web Services Description Language)
จุดสังเกตด้วยการที่เราต้อง logic ต่างๆออกมาเป็น service ทำให้ยากต่อการพัฒนารองรับ format ข้อมูลที่เป็น XML เท่านั้นด้วยการที่เราแยกเป็นหลายๆ service มีโครงสร้างหลายส่วน เลยทำให้เวลา รับ-ส่งข้อมูลจะกิน bandwith มากกว่าปกติ
GraphQL
Meaning ของ GraphQL การที่เราขอข้อมูลจาก server และต้องการข้อมูลที่กระชับตามที่ต้องการเท่านั้น เรียกว่าการ Query ซึ่งการดึงข้อมูลจะคล้ายๆกับใน SQL แต่มันไม่เกี่ยวข้องกันนะ 🙂
จุดเด่นสามารถคัดกรองข้อมูลได้ตามที่เราจะใช้จริงๆ ได้ข้อมูลที่กระซับ เช่น เราต้องการแค่ชื่อ ของนักศึกษารหัส 123 เราก็สามารถ เขียน querty เพื่อดึงแค่ชื่อของนักศึกษาออกมา ไม่จำเป็นต้องเอาข้อมูลอื่นๆที่ไม่เกี่ยวข้องมาด้วยDeveloper สามารถกำหนด TYPE ข้อมูลต่างๆให้ property ได้เพื่อง่ายต่อการพัฒนาDeveloper สามารถ generate document ออกมาเองได้โดยอัติโนมัติ
จุดสังเกตด้วยความที่เป็นเทคโนโลยใหม่ใน ณ ปัจจุบันจึงอาจจะต้องศึกษาเองจาก doc บางในบางเรื่องยากสำหรับผู้ที่เริ่มต้นเขียน APIเวลาสร้างต้องระบุ TYPE ต่างๆ property ให้ชัดเจน เหมือนกัน Strong Datatype ใน ภาษา programming
API use cases
การส่ง SMS ทางฝั่งผู้ส่ง ส่ง Request ไปยัง API และ API นำ request ไปประมวลผล และส่ง SMS ไปยังผู้รับได้อย่างถูกต้อง Example: ThaiBulkSMSการ Login เข้า Application ต่างๆ โดยผ่าน Account จาก Application อื่นๆเช่น LINE Facebook ก็ใช้ API เข้ามาช่วยเพื่อให้ง่ายขึ้นโดยที่ LINE หรือ Facebook ก็จะมี API สื่อกลางระหว่าง Application ที่เราจะใช้ กับข้อมูลของ Line หรือ facebook เพื่อให้ข้อมูลสามารถใช้ร่วมกันได้ระหว่าง ApplicationAPI in real lifeไปร้านหาอาหาร สั่งอาหารกับพนักงาน พนักงานไปบอกเชฟ เชฟทำเสร็จเอามาให้พนักงานไปเสริฟ ในที่นี้ พนักงานคือ API 🙂แม่โทรไปบอกลูกให้กรอกน้ำ ลูกกรอกน้ำเสร็จโทรกลับไปบอกแม่ว่าเสร็จแล้ว ในที่นี้ โทรศัพท์คือ API 😛