API คืออะไร? เป็นภาษาอังกฤษ.

ก่อนที่ฉันจะเรียนรู้การพัฒนาซอฟต์แวร์ API ฟังดูเหมือนเบียร์ชนิดหนึ่ง

วันนี้ฉันใช้คำนี้บ่อยมากจนเมื่อไม่นานมานี้ฉันได้ลองสั่ง API ที่บาร์

คำตอบของบาร์เทนเดอร์คือการโยน 404: ไม่พบทรัพยากร

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

เทคนิค API ย่อมาจากApplication Programming Interface ในบางครั้ง บริษัท ขนาดใหญ่ส่วนใหญ่ได้สร้าง API สำหรับลูกค้าของตนหรือเพื่อการใช้งานภายใน

แต่คุณจะอธิบาย API เป็นภาษาอังกฤษธรรมดาได้อย่างไร? และมีความหมายกว้างกว่าที่ใช้ในการพัฒนาและธุรกิจหรือไม่? ก่อนอื่นให้ย้อนกลับมาดูว่าเว็บทำงานอย่างไร

WWW และเซิร์ฟเวอร์ระยะไกล

เมื่อฉันคิดถึงเว็บฉันจินตนาการถึงเครือข่ายเซิร์ฟเวอร์ที่เชื่อมต่อขนาดใหญ่

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

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

เมื่อคุณพิมพ์ www.facebook.com ลงในเบราว์เซอร์คำขอจะส่งไปยังเซิร์ฟเวอร์ระยะไกลของ Facebook เมื่อเบราว์เซอร์ของคุณได้รับการตอบกลับมันจะแปลรหัสและแสดงหน้า

สำหรับเบราว์เซอร์หรือที่เรียกว่าไคลเอนต์เซิร์ฟเวอร์ของ Facebook คือ API ซึ่งหมายความว่าทุกครั้งที่คุณเยี่ยมชมเพจบนเว็บคุณจะโต้ตอบกับ API ของเซิร์ฟเวอร์ระยะไกล

API ที่ไม่ได้เป็นเช่นเดียวกับเซิร์ฟเวอร์ระยะไกล - ค่อนข้างมันเป็นส่วนหนึ่งของเซิร์ฟเวอร์ที่ได้รับการร้องขอและส่งคำตอบ

API เป็นวิธีการให้บริการลูกค้าของคุณ

คุณคงเคยได้ยิน บริษัท บรรจุภัณฑ์ API เป็นผลิตภัณฑ์ ตัวอย่างเช่น Weather Underground ขายการเข้าถึง API ข้อมูลสภาพอากาศ

สถานการณ์ตัวอย่าง:เว็บไซต์ของธุรกิจขนาดเล็กของคุณมีแบบฟอร์มที่ใช้ในการลงทะเบียนลูกค้าเพื่อนัดหมาย คุณต้องการให้ลูกค้าของคุณสามารถสร้างกิจกรรมใน Google ปฏิทินโดยอัตโนมัติพร้อมด้วยรายละเอียดสำหรับการนัดหมายนั้น

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

หรือเบราว์เซอร์ของคุณมักจะส่งคำขอ API ไปยังเซิร์ฟเวอร์ของ Google ได้โดยตรงโดยข้ามเซิร์ฟเวอร์ของคุณ

API ของ Google ปฏิทินนี้แตกต่างจาก API ของเซิร์ฟเวอร์ระยะไกลอื่น ๆ อย่างไร

ในแง่เทคนิคความแตกต่างคือรูปแบบของคำขอและการตอบกลับ

การแสดงผลหน้าเว็บทั้งหมดเบราว์เซอร์ของคุณคาดว่าการตอบสนองในHTML,ซึ่งมีรหัส presentational ในขณะที่เรียก API ของ Google ปฏิทินก็จะส่งกลับข้อมูล - แนวโน้มในรูปแบบเหมือนJSON

หากเซิร์ฟเวอร์ของเว็บไซต์ของคุณกำลังส่งคำขอ API เซิร์ฟเวอร์ของเว็บไซต์ของคุณก็คือไคลเอนต์ (คล้ายกับที่เบราว์เซอร์ของคุณเป็นไคลเอนต์เมื่อคุณใช้เพื่อนำทางไปยังเว็บไซต์)

จากมุมมองของผู้ใช้ API ช่วยให้พวกเขาดำเนินการได้โดยไม่ต้องออกจากเว็บไซต์ของคุณ

เว็บไซต์สมัยใหม่ส่วนใหญ่ใช้ API ของบุคคลที่สามเป็นอย่างน้อย

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

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

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

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

ตัวอย่างเช่นคุณสามารถเข้าถึง API ของ GitHub ได้โดยตรงด้วยเบราว์เซอร์ของคุณโดยไม่ต้องใช้โทเค็นการเข้าถึง นี่คือการตอบสนอง JSON ที่คุณจะได้รับเมื่อคุณไปที่เส้นทาง API ของผู้ใช้ GitHub ในเบราว์เซอร์ของคุณ (//api.github.com/users/petrgazarov):

{ "login": "petrgazarov", "id": 5581195, "avatar_url": "//avatars.githubusercontent.com/u/5581195?v=3", "gravatar_id": "", "url": "//api.github.com/users/petrgazarov", "html_url": "//github.com/petrgazarov", "followers_url": "//api.github.com/users/petrgazarov/followers", "following_url": "//api.github.com/users/petrgazarov/following{/other_user}", "gists_url": "//api.github.com/users/petrgazarov/gists{/gist_id}", "starred_url": "//api.github.com/users/petrgazarov/starred{/owner}{/repo}", "subscriptions_url": "//api.github.com/users/petrgazarov/subscriptions", "organizations_url": "//api.github.com/users/petrgazarov/orgs", "repos_url": "//api.github.com/users/petrgazarov/repos", "events_url": "//api.github.com/users/petrgazarov/events{/privacy}", "received_events_url": "//api.github.com/users/petrgazarov/received_events", "type": "User", "site_admin": false, "name": "Petr Gazarov", "company": "PolicyGenius", "blog": "//petrgazarov.com/", "location": "NYC", "email": "[email protected]", "hireable": null, "bio": null, "public_repos": 23, "public_gists": 0, "followers": 7, "following": 14, "created_at": "2013-10-01T00:33:23Z", "updated_at": "2016-08-02T05:44:01Z"}

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

A ใช้สำหรับ "แอปพลิเคชัน"

หากต้องการปิดเรามาดูตัวอย่าง API อีกสองสามตัวอย่าง

“ แอปพลิเคชัน” สามารถอ้างอิงได้หลายอย่าง นี่คือบางส่วนในบริบทของ API:

  1. ซอฟต์แวร์ที่มีฟังก์ชันที่แตกต่างกัน
  2. ทั้งเซิร์ฟเวอร์แอปทั้งหมดหรือเพียงส่วนเล็ก ๆ ของแอป

โดยทั่วไปซอฟต์แวร์ใด ๆ ที่สามารถแยกออกจากสภาพแวดล้อมได้อย่างชัดเจนอาจเป็น "A" ใน API และอาจมี API บางประเภทด้วย

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

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

แต่ละออบเจ็กต์มี API ซึ่งเป็นชุดของวิธีการสาธารณะและคุณสมบัติที่ใช้เพื่อโต้ตอบกับอ็อบเจ็กต์อื่น ๆ ในแอปพลิเคชันของคุณ

วัตถุอาจมีตรรกะภายในที่เป็นส่วนตัวซึ่งหมายความว่าเป็นซ่อนอยู่จากขอบเขตภายนอก (ไม่ใช่ API)

จากสิ่งที่เราได้กล่าวไปฉันหวังว่าคุณจะนำความหมายที่กว้างขึ้นของ API ออกไปรวมทั้งการใช้คำศัพท์ทั่วไปในปัจจุบัน

แหล่งข้อมูลที่น่าสนใจ (สิ่งที่ฉันทิ้งไว้ แต่ก็ยังเจ๋งมาก):

วิดีโอ youtube ที่ยอดเยี่ยมบน DNS (ระบบชื่อโดเมน)

พื้นฐานโปรโตคอล HTTP

วิดีโอ Khan Academy ที่ยอดเยี่ยมเกี่ยวกับหลักการออกแบบเชิงวัตถุ