Technology

API คืออะไร? อธิบายแบบคนไม่เขียนโปรแกรมรู้เรื่องได้มั้ย?

ก่อนอื่นต้องทำความเข้าใจก่อนว่าแอพต่างๆหรือหน้าเว็บที่เราเห็นกันทุกวันนี้ การทำงานทุกอย่างไม่ได้อยู่ในแอพ Facebook ที่คุณลงไว้ในมือถือ หรือหน้าเว็บ facebook.com ที่คุณเปิดขึ้นมา

 

server-client-model

ระบบมักจะแบ่งเป็นสองส่วนขึ้นไป ส่วนหนึ่งเอาไว้แสดงผลและรับคำสั่งจากคุณว่าอยากจะทำอะไร (แอพที่คุณลงไว้บนมือถือ หรือหน้าเว็บ facebook.com ที่มีช่องให้กรอกกับปุ่มให้กด) พอกดปุ่ม มันจะส่งคำสั่งไปที่ server อีกที ซึ่งเป็นส่วนที่ทำงานจริงๆ พอทำงานเสร็จก็จะคืนผลลัพธ์ให้กลับมาแสดงบนหน้าจอ

เช่น เวลาเราเปิดแอพ Facebook แล้วเราเห็นสิ่งต่างๆเกี่ยวกับเพื่อนๆขึ้นมาบนหน้าจอ มันมาได้ยังไง? มันเกิดจากแอพ Facebook บนมือถือของเรา ถามไปที่ Server ของ Facebook ว่ามีอะไรใหม่บ้าง แล้วพอ Server ได้รับคำถามก็ส่งรายการกลับมาให้ แล้วแอพบนมือถือเราก็เอาไปจัดการต่อว่าจะแสดงบนจอยังไง การ “ถาม” ของแอพบนมือถือเราไปยัง Server นั้น ในทางเขียนโปรแกรม เรียกว่าแอพมือถือเรียกใช้ API ของ server

API ย่อมาจาก Application Programming Interface ที่แปลความได้ว่า วิธีเรียกใช้โปรแกรม เราต้องเร่ิมจากการมองว่า Server ของผู้ให้บริการต่างๆเป็นโปรแกรมก่อน เช่น Server ของ Google ที่ค้นหาข้อมูลให้เราก็ถือว่าเป็นโปรแกรมใหญ่ๆตัวหนึ่ง Server ของ Facebook ก็เป็นโปรแกรมตัวหนึ่ง Server ธนาคารก็เป็นโปรแกรมตัวหนึ่ง

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

  1. สั่งอะไรได้บ้าง มองแบบง่ายๆแต่ละคำสั่งคือ 1 API
  2. แต่ละคำสั่งต้องบอกอะไรเพิ่มบ้าง เช่น สั่งว่าขอข้อมูลหน้าโปรไฟล์เพื่อนหน่อย คุณก็ต้องบอกชื่อเพื่อน และบอกว่าคุณเป็นใครด้วย จะได้ยืนยันว่าเป็นเพื่อนกัน

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

API ทำอะไรได้หลายอย่าง

  • บาง API อาจเป็นคำถามที่ไม่ได้แก้อะไร แต่อยากได้รับข้อมูลกลับมา เช่น ขอดูโปรไฟล์เพื่อน
  • บาง API อาจจะเปลี่ยนแปลงบางอย่างในระบบ เช่น การโพสรูป เราก็ต้องส่งรูปจากเครื่องเราไปเก็บบน server เพื่อนๆจะได้เปิดดูได้
  • บาง API ก็ช่วยทำหลายๆอย่างให้คนใช้งานได้สะดวกขึ้น เช่น อยากได้ปุ่ม Like แทนที่จะต้องนั่งคิดว่าจะวาดปุ่ม Like บนเว็บตัวเองยังไง แล้วจะกด like ต้องเรียก API ตัวไหน ก็เอา code สำหรับปุ่ม Like ที่ Facebook แจกไปแปะบนเว็บตัวเองได้เลยไม่ต้องคิด code ที่แจกนี้ก็นับเป็น API

ลองเปลี่ยนร้านลูกชิ้นเป็น API กัน

pork-ball

มาขายลูกชิ้นกัน

สมมติว่าเราเป็นร้านขายส่งลูกชิ้นทางโทรศัพท์ ทั้งร้านขายอยู่สองอย่างคือ ลูกชิ้นปลา และ ลูกชิ้นกุ้ง เวลาคนโทรมาซื้อเรารับออเดอร์แค่สองแบบ คือ

  1. บอกว่า “ปลา n ลูก” เพื่อสั่งลูกชิ้นปลา + จำนวนลูกเป็นตัวเลข
  2. บอกว่า “กุ้ง n ลูก” เพื่อสั่งลูกชิ้นกุ้ง + จำนวนลูกเป็นตัวเลข

ถ้าจะสั่งทั้งลูกชิ้นปลาและลูกชิ้นกุ้ง ก็ต้องพูดสองครั้ง คือ “ปลา n ลูก” และ “กุ้ง n ลูก”

ร้านเกาเหลาชายสาม สั่งลูกชิ้นจากร้านเรา ก็ต้องโทรมาบอกทุกวันว่า “ปลา 1000 ลูก” และ “กุ้ง 1000 ลูก”

ถ้าชายสามโทรมาบอกว่า “ปลาหมึก 500 ลูก” พนักงานก็บอกว่ารับออเดอร์นี้ไม่ได้ เพราะร้านเราไม่ขายลูกชิ้นปลาหมึก

ถ้าชายสามโทรมาบอกว่า “ปลา เยอะๆหน่อย” พนักงานก็ไม่รับออเดอร์เพราะไม่รู้ว่าเยอะๆนี่มันเท่าไหร่

ถ้าชายสามโทรมาบอกว่า “ปลากุ้ง 1000 ลูก” พนักงานก็บอกว่ารับออเดอร์นี้ไม่ได้เช่นกัน เพราะร้านเราไม่รู้จักลูกชิ้นปลากุ้ง ขายแต่ลูกชิ้นปลา หรือลูกชิ้นกุ้ง

ถ้าชายสามโทรมาบอกว่า “เนื้อปลา 5 กิโล” พนักงานเราก็ไม่รับออเดอร์ ถึงแม้เราน่าจะมีเนื้อปลา แต่เราไม่ได้บอกว่าเราขาย

การที่ชายสามโทรมาสั่งลูกชิ้นนั้น เปรียบได้ว่าชายสามเรียกใช้ API ของร้านเรา ถ้าชายสามสั่งไม่ถูกตามที่เราบอกไว้ เราก็ไม่ขาย

API ขายลูกชิ้น

API คือสิ่งที่ผู้ให้บริการ ประกาศว่าจะให้บริการ และกำหนดข้อตกลงไว้ชัดเจนว่าต้องแจ้งเขาอย่างไรจึงจะได้รับบริการนั้น การเรียกใช้บริการส่วนใหญ่จะทำผ่านอินเตอร์เน็ต พูดง่ายๆก็คือเข้าเว็บ คิดซะว่า server แต่ละตัวรู้จักที่อยู่ตัวเอง และเอาหูแนบ Internet ตลอดเวลาคอยฟังว่ามีใครเรียกที่อยู่ตัวเองรึเปล่า ถ้าโดนเรียกก็จะทำงาน

ถ้าเปลี่ยนร้านลูกชิ้นเราเป็นระบบขายลูกชิ้นให้บริการผ่านทางเว็บ ก็จะมี API สองตัว คือ

  1. http://myfishball.com/api/fish?amount=n เป็น API ตัวแรกที่เอาไว้สั่งลูกชิ้นปลา โดยเปลี่ยน n เป็นจำนวนลูกชิ้นทีต้องการ เมื่อเข้าที่อยู่เว็บนี้ มันจะพยายามทำรายการและบอกว่าสั่งเรียบร้อยหรือไม่
  2. http://myfishball.com/api/shrimp?amount=n เป็น API ตัวที่สองที่เอาไว้สั่งลูกชิ้นกุ้ง โดยเปลี่ยน n เป็นจำนวนลูกชิ้นทีต้องการ เมื่อเข้าที่อยู่เว็บนี้ มันจะพยายามทำรายการและบอกว่าสั่งเรียบร้อยหรือไม่

ชายสามจะสั่งลูกชิ้นปลา 1000 ลูก และลูกชิ้นกุ้ง 1000 ลูก ก็เข้า http://myfishball.com/api/fish?amount=1000 หนึ่งครั้ง ตามด้วย http://myfishball.com/api/shrimp?amount=1000

ชายสามจะเข้า http://myfishball.com/api/octopus?amount=500 ก็ไม่ได้ เพราะ API นั้นไม่มีตัวตน

ชายสามจะเข้า http://myfishball.com/api/fish?amount=many เพื่อสั่งลูกชิ้นปลาเยอะๆ ระบบก็จะฟ้องว่าสั่งไม่ได้ เพราะเรากำหนดไว้ว่าจำนวนลูกชิ้นต้องเป็นตัวเลข

ชายสามจะเข้า http://myfishball.com/api/fishshrimp?amount=1000 ก็ไม่ได้ เพราะ API นี้ไม่มีตัวตน บอกแล้วว่าลูกชิ้นปลากับกุ้งต้องสั่งแยกกัน

ชายสามจะเข้า http://myfishball.com/api/fishmeat?amount=5kg ก็ไม่ได้ เพราะเราไม่มี API สำหรับสั่งเนื้อปลา

มันง่ายๆแค่นี้เหรอ

บางครั้งมันก็จบง่ายๆแบบนี้แหละครับ เปิดที่อยู่เว็บให้ใครก็เรียกใช้งานบริการของเราได้

แต่ก็ไม่ใช่ทุก API ที่จะให้ใครๆก็เรียกได้ตามใจชอบ ถ้าคนเรียกถี่มากๆ ระบบเราก็อาจจะรองรับไม่ไหว พัง ล่ม ต้องจำกัดจำนวนครั้งในการเรียก หรือทำให้ระบบเสถียรมากๆเพื่อรองรับ

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

ใช้งาน API ของตัวเอง

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

pork-ball-model

เปิด API ให้คนอื่นใช้ดียังไง

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

อ่านเพิ่มเติม

https://www.quora.com/What-is-an-API-4

You may also like

PageSpeed Score 02 - Skooldio Blog |PageSpeed Insights 04 เครื่องมือที่ Developer ควรรู้จัก ถ้าอยาก ‘เร่งสปีด’ เว็บไซต์ | PageSpeed Score Boots Up
Technology

PageSpeed Insights เครื่องมือที่ Developer ควรรู้จัก ถ้าอยาก ‘เร่งสปีด’ เว็บไซต์

ไม่ว่าคุณจะเป็นเจ้าของธุรกิจที่มีเว็บไซต์เป็นส่วนสำคัญในการบริการลูกค้า หรือเป็น Developer ที่กำลังปวดหัวกับปัญหาเว็บไซต์ที่โหลดและทำงานได้ค่อนข้างช้า ซึ่งส่งผลเสียโดยตรงถึง UX (User Experience) ของเว็บไซต์ มีผลวิจัยที่รายงานสถิติออกมาว่าทุกวินาทีที่เพิ่มขึ้นในการโหลดเว็บไซต์จะทำให้มีโอกาสเสียผู้ใช้งานเพิ่มขึ้น 30% โดยเฉพาะสำหรับเว็บไซต์ที่มีกิจกรรมซื้อขายอย่าง E-​commerce ประสบการณ์ที่ช้าและไม่ลื่นไหลในการจับจ่ายบนเว็บไซต์ก็ส่งผลไปถึง conversion ...
Skooldio Blog - Python คืออะไร? | Featured Image
Technology

Python คืออะไร? เป็นภาษาที่ง่ายที่สุดจริงหรือ?

Python คืออะไร? สำหรับคนที่สนใจอัปสกิลการเขียนโปรแกรม หนึ่งในภาษาแรกที่เป็นที่นิยมอย่างมากก็คือ Python เนื่องจากเป็นภาษาการเขียนโปรแกรมที่มีผู้ใช้มากมาย และยังถูกเรียกว่าเป็นหนึ่งในภาษาที่ “ง่าย” ที่สุดอีกด้วย แล้วภาษา Python นี้มันง่ายยังไง? บทความนี้จะพาไปอ่านกัน Python คืออะไร ...

More in:Technology

วิธีเลือกภาษาพัฒนา Microservices พร้อมตัวอย่างภาษาสุดฮิต ที่ใช้ได้ทันที Technology

วิธีเลือกภาษาพัฒนา Microservices พร้อมตัวอย่างภาษาสุดฮิต ที่ใช้ได้ทันที

Microservices เป็นแนวคิดในการออกแบบ architecture ของระบบงาน ซึ่งผู้พัฒนาสามารถใช้ภาษาไหนมาพัฒนาก็ได้ แต่ก็ต้องมีเงื่อนไขอยู่เช่นกัน บล็อกนี้เราจะมาแนะนำแนวทางการเลือกใช้ภาษาสำหรับพัฒนา Microservices พร้อมตัวอย่างภาษาต่าง ๆ และข้อดี-ข้อเสียที่ให้คุณได้เลือกใช้ได้ทันที !!
Skooldio blog 3 ข้อดี ทำไมคนเป็นหมอ ควรเขียนโค้ดเป็น | Header Technology

3 ข้อดี ทำไมคนเป็นหมอ ควรเขียนโค้ดเป็น?

แพทยศาสตร์ ยังคงเป็นหนึ่งในสายการเรียนยอดฮิตในหมู่นักเรียนสายวิทย์ในปัจจุบัน ถึงแม้ว่าเทคโนโลยี จะมาสร้างความเปลี่ยนแปลงในโลกนี้อย่างมากมาย แต่อาชีพหมอ ก็ยังเป็นอาชีพที่ขาดไม่ได้ และเป็นอาชีพที่หลายๆ คนหมายปอง เมื่อเห็นคำว่า “โปรแกรมเมอร์” หรือการ “เขียนโค้ด” น้องๆ หลายคน คงนึกถึงการเป็นวิศวกร ...
Airtable | Skooldio Blog - เฉลยเคล็บลับ HubSpot เทคนิคประหยัดเวลาทำงาน 30 ชั่วโมง ต่อวีค!! Business

เฉลยเคล็บลับ HubSpot เทคนิคประหยัดเวลาทำงาน 30 ชั่วโมง ต่อวีค!

HubSpot เป็นแพลตฟอร์มระดับโลก ผู้นำด้านซอฟต์แวร์การทำการตลาดแบบ Inbound Marketing และการขายแบบครบวงจร ปัจจุบันมีกลุ่มธุรกิจมากกว่า 48,000 ธุรกิจ จาก 100 ประเทศทั่วโลก ที่ใช้งาน HubSpot Software ...
Skooldio blog | อยากเริ่มเขียนโปรแกรม ภาษาไหนที่เหมาะกับเรา? Technology

อยากเริ่มเขียนโปรแกรม ภาษาไหนที่เหมาะกับเรา?

ในยุคที่ “Digital ไม่ใช่ทางเลือก แต่เป็นทางรอด” สกิลที่ทุกคนหันมาให้ความสนใจกันอย่างล้นหลาม คือสกิลการโค้ด หรือการเขียนโปรแกรมนั่นเอง เริ่มยังไง? เชื่อว่าหลายคนคงจะรู้สึกกังวล หรือกลัวการเขียนโปรแกรม เพราะมันเหมือนเป็นโลกใบใหม่ ที่มีภาษาต่างๆ มากมาย ดูผ่านๆ เหมือนจะคล้ายกัน ...

Comments are closed.