กลับไปหน้าบทความ

อ่าน 15 นาที

API

อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน ( API ) คือการเชื่อมต่อระหว่างคอมพิวเตอร์หรือระหว่างโปรแกรมคอมพิวเตอร์เป็นอินเทอร์เฟซซอฟต์แวร์ ประเภทหนึ่ง ที่ให้บริการแก่ซอฟต์แวร์อื่นๆ

API

หน้าเว็บได้รับการป้องกันบางส่วน

อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน ( API ) คือการเชื่อมต่อระหว่างคอมพิวเตอร์หรือระหว่างโปรแกรมคอมพิวเตอร์เป็นอินเทอร์เฟซซอฟต์แวร์ ประเภทหนึ่ง ที่ให้บริการแก่ซอฟต์แวร์อื่นๆ[ 1 ] [ 2 ]เอกสารหรือมาตรฐานที่อธิบายวิธีการสร้างการเชื่อมต่อหรืออินเทอร์เฟซดังกล่าวเรียกว่าข้อกำหนด APIระบบคอมพิวเตอร์ที่ตรงตามมาตรฐานนี้กล่าวได้ว่าได้นำ API ไปใช้หรือเปิดเผย API คำว่า API อาจหมายถึงทั้งข้อกำหนดหรือการนำไปใช้

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

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

คำว่า API มักใช้เพื่ออ้างถึงAPI บนเว็บ [ 3 ]ซึ่งอนุญาตให้มีการสื่อสารระหว่างคอมพิวเตอร์ที่เชื่อมต่อกันผ่านอินเทอร์เน็ตนอกจากนี้ยังมี API สำหรับภาษาโปรแกรมไลบรารีซอฟต์แวร์ระบบปฏิบัติการคอมพิวเตอร์และฮาร์ดแวร์คอมพิวเตอร์ API มีต้นกำเนิดในช่วงทศวรรษ 1940 แม้ว่าคำนี้จะปรากฏขึ้นในช่วงทศวรรษ 1960 และ 1970 ก็ตาม

วัตถุประสงค์

API เปิดระบบซอฟต์แวร์ให้มีการโต้ตอบจากภายนอก ช่วยให้ระบบซอฟต์แวร์สองระบบสามารถสื่อสารกันข้ามขอบเขต — อินเทอร์เฟซ — โดยใช้สัญญาณที่ตกลงร่วมกัน[ 4 ]กล่าวอีกนัยหนึ่ง API เชื่อมต่อเอนทิตีซอฟต์แวร์เข้าด้วยกัน ต่างจากอินเทอร์เฟซผู้ใช้ API โดยทั่วไปจะไม่ปรากฏให้ผู้ใช้เห็น เป็นส่วน "เบื้องหลัง" ของระบบซอฟต์แวร์ที่ใช้สำหรับการสื่อสารระหว่างเครื่อง[ 5 ]

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

โดยเปรียบเทียบแล้ว API เปรียบเสมือนตัวต่อที่เชื่อมต่อซอฟต์แวร์เข้าด้วยกัน

การสร้างซอฟต์แวร์โดยใช้ API ได้รับการเปรียบเทียบกับการใช้ของเล่นตัวต่อ เช่น อิฐ เลโก้บริการซอฟต์แวร์หรือไลบรารีซอฟต์แวร์เปรียบเสมือนอิฐเหล่านั้น พวกมันสามารถเชื่อมต่อกันได้ผ่าน API เพื่อสร้างผลิตภัณฑ์ซอฟต์แวร์ใหม่[ 7 ]กระบวนการเชื่อมต่อนี้เรียกว่าการบูรณาการ[ 4 ]

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

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

ประวัติความเป็นมาของคำนี้

แผนภาพจากปี 1978 เสนอให้ขยายแนวคิดของ API ให้กลายเป็นอินเทอร์เฟซการเขียนโปรแกรมทั่วไป นอกเหนือจากโปรแกรมแอปพลิเคชันเพียงอย่างเดียว[ 10 ]

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

แนวคิดของ API นั้นเก่าแก่กว่าคำศัพท์นี้มาก นักวิทยาศาสตร์คอมพิวเตอร์ชาวอังกฤษMaurice WilkesและDavid Wheelerได้ทำงานเกี่ยวกับไลบรารีซอฟต์แวร์ แบบโมดูลาร์ ในช่วงทศวรรษ 1940 สำหรับEDSACซึ่งเป็นคอมพิวเตอร์รุ่นแรกๆ ซับรูทีนในไลบรารีนี้ถูกจัดเก็บไว้บนเทปกระดาษเจาะรูที่จัดเรียงไว้ในตู้เก็บเอกสาร ตู้นี้ยังประกอบด้วยสิ่งที่ Wilkes และ Wheeler เรียกว่า "แคตตาล็อกไลบรารี" ของบันทึกเกี่ยวกับซับรูทีนแต่ละตัวและวิธีการรวมเข้ากับโปรแกรม ปัจจุบัน แคตตาล็อกดังกล่าวจะถูกเรียกว่า API (หรือข้อกำหนด API หรือเอกสารประกอบ API) เพราะมันแนะนำโปรแกรมเมอร์เกี่ยวกับวิธีการใช้ (หรือ "เรียก") ซับรูทีนแต่ละตัวที่โปรแกรมเมอร์ต้องการ[ 11 ]

หนังสือ The Preparation of Programs for an Electronic Digital Computerของ Wilkes และ Wheeler มีข้อกำหนด API ที่เผยแพร่ครั้งแรกJoshua Blochถือว่า Wilkes และ Wheeler "คิดค้น" API โดยปริยาย เนื่องจากเป็นแนวคิดที่ถูกค้นพบมากกว่าถูกคิดค้น[ 11 ]

แม้ว่าผู้ที่คิดค้นคำว่า API จะทำการพัฒนาซอฟต์แวร์บนUnivac 1108แต่เป้าหมายของ API ของพวกเขาก็คือการทำให้โปรแกรมที่ไม่ขึ้นกับฮาร์ดแวร์ เป็นไปได้ [ 12 ]

คำว่า "อินเทอร์เฟซโปรแกรมแอปพลิเคชัน" (โดยไม่มี คำต่อท้าย -ing ) ถูกบันทึกไว้ครั้งแรกในเอกสารชื่อโครงสร้างข้อมูลและเทคนิคสำหรับกราฟิกคอมพิวเตอร์ ระยะไกล ที่นำเสนอใน การประชุม AFIPSในปี 1968 [ 13 ] [ 11 ]ผู้เขียนเอกสารนี้ใช้คำนี้เพื่ออธิบายปฏิสัมพันธ์ของแอปพลิเคชัน —ในกรณีนี้คือโปรแกรมกราฟิก—กับส่วนที่เหลือของระบบคอมพิวเตอร์ อินเทอร์เฟซแอปพลิเคชันที่สอดคล้องกัน (ประกอบด้วย การเรียกใช้ซับรูทีน Fortran ) มีจุดประสงค์เพื่อปลดปล่อยโปรแกรมเมอร์จากการจัดการกับลักษณะเฉพาะของอุปกรณ์แสดงผลกราฟิก และเพื่อให้เกิดความเป็นอิสระของฮาร์ดแวร์หากมีการเปลี่ยนคอมพิวเตอร์หรือจอแสดงผล[ 12 ]

คำนี้ได้รับการแนะนำเข้าสู่สาขาฐานข้อมูลโดยCJ Date [ 14 ]ในบทความปี 1974 ที่ชื่อว่าThe Relational and Network Approaches : Comparison of the Application Programming Interface [ 15 ] API กลายเป็นส่วนหนึ่งของเฟรมเวิร์ก ANSI/SPARCสำหรับระบบจัดการฐานข้อมูลเฟรมเวิร์กนี้ถือว่า Application Programming Interface แยกต่างหากจากอินเทอร์เฟซอื่นๆ เช่น อินเทอร์เฟซการสืบค้น ผู้เชี่ยวชาญด้านฐานข้อมูลในช่วงปี 1970 สังเกตเห็นว่าอินเทอร์เฟซต่างๆ เหล่านี้สามารถรวมกันได้ อินเทอร์เฟซแอปพลิเคชันที่สมบูรณ์เพียงพอสามารถรองรับอินเทอร์เฟซอื่นๆ ได้เช่นกัน[ 10 ]

การสังเกตนี้ทำให้เกิด API ที่รองรับการเขียนโปรแกรมทุกประเภท ไม่ใช่แค่การเขียนโปรแกรมแอปพลิเคชันเท่านั้น ในปี 1990 นักเทคโนโลยี Carl Malamudได้นิยาม API อย่างง่ายๆ ว่า "ชุดบริการที่มีให้แก่โปรแกรมเมอร์เพื่อดำเนินการบางอย่าง" [ 16 ]

ภาพหน้าจอเอกสาร ประกอบการใช้งาน Web APIที่เขียนโดยNASA

แนวคิดของ API ได้รับการขยายอีกครั้งด้วยการเกิดขึ้นของการเรียกใช้ฟังก์ชันระยะไกลและเว็บ APIเมื่อเครือข่ายคอมพิวเตอร์แพร่หลายมากขึ้นในช่วงทศวรรษ 1970 และ 1980 โปรแกรมเมอร์ต้องการเรียกใช้ไลบรารีที่ไม่ได้อยู่แค่ในคอมพิวเตอร์ของตนเองเท่านั้น แต่ยังรวมถึงคอมพิวเตอร์ที่ตั้งอยู่ในที่อื่นด้วย การเรียกใช้ฟังก์ชันระยะไกลเหล่านี้ได้รับการสนับสนุนเป็นอย่างดีโดยเฉพาะอย่างยิ่งใน ภาษา Javaในช่วงทศวรรษ 1990 ด้วยการแพร่กระจายของอินเทอร์เน็ตมาตรฐานต่างๆ เช่นCORBA , COMและDCOMได้แข่งขันกันเพื่อเป็นวิธีที่ใช้กันทั่วไปในการเปิดเผยบริการ API [ 17 ]

วิทยานิพนธ์ของRoy Fielding เรื่อง Architectural Styles and the Design of Network-based Software Architecturesที่UC Irvineในปี 2000 ได้สรุปRepresentational state transfer (REST) ​​และอธิบายแนวคิดของ "Application Programming Interface บนเครือข่าย" ซึ่ง Fielding ได้เปรียบเทียบกับ API แบบดั้งเดิมที่ "อิงตามไลบรารี" [ 18 ] API เว็บ XMLและJSONได้รับการนำไปใช้ในเชิงพาณิชย์อย่างแพร่หลายตั้งแต่ปี 2000 และต่อเนื่องมาจนถึงปี 2021 ปัจจุบัน API เว็บเป็นความหมายที่พบได้บ่อยที่สุดของคำว่า API [ 3 ]

เว็บเชิงความหมาย (Semantic Web)ที่เสนอโดยTim Berners-Leeในปี 2001 ประกอบด้วย "API เชิงความหมาย" (semantic API) ซึ่งปรับเปลี่ยน API ให้เป็น อินเทอร์เฟซข้อมูล แบบเปิดและกระจาย แทนที่จะเป็นอินเทอร์เฟซพฤติกรรมซอฟต์แวร์[ 19 ] อินเทอร์เฟซและเอเจนต์ ที่เป็นกรรมสิทธิ์แพร่หลายมากกว่าแบบเปิด แต่แนวคิดของ API ในฐานะอินเทอร์เฟซข้อมูลก็ได้รับการยอมรับ เนื่องจากเว็บ API ถูกใช้กันอย่างแพร่หลายในการแลกเปลี่ยนข้อมูลทุกประเภททางออนไลน์ API จึงกลายเป็นคำกว้างๆ ที่อธิบายการสื่อสารส่วนใหญ่บนอินเทอร์เน็ต[ 17 ]เมื่อใช้ในลักษณะนี้ คำว่า API จึงมีความหมายทับซ้อนกับคำว่าโปรโตคอลการสื่อสาร

ประเภท

ห้องสมุดและเฟรมเวิร์ก

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

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

การแยก API ออกจากการใช้งานจะช่วยให้โปรแกรมที่เขียนด้วยภาษาหนึ่งสามารถใช้ไลบรารีที่เขียนด้วยภาษาอื่นได้ ตัวอย่างเช่น เนื่องจากScalaและJavaคอมไพล์เป็นไบต์โค้ด ที่เข้ากันได้ นักพัฒนา Scala จึงสามารถใช้ประโยชน์จาก API ของ Java ได้[ 20 ]

การใช้งาน API อาจแตกต่างกันไปขึ้นอยู่กับประเภทของภาษาโปรแกรมที่เกี่ยวข้อง API สำหรับภาษาเชิงขั้นตอนเช่นLuaอาจประกอบด้วยรูทีนพื้นฐานเพื่อเรียกใช้โค้ด จัดการข้อมูล หรือจัดการข้อผิดพลาด ในขณะที่ API สำหรับภาษาเชิงวัตถุเช่น Java จะให้ข้อกำหนดของคลาสและเมธอด ของ คลาส[ 21 ] [ 22 ]กฎของไฮรัมระบุว่า "เมื่อมีผู้ใช้ API จำนวนมากพอ ไม่ว่าคุณจะสัญญาอะไรไว้ในสัญญา พฤติกรรมที่สังเกตได้ทั้งหมดของระบบของคุณจะขึ้นอยู่กับใครบางคน" [ 23 ]ในขณะเดียวกัน การศึกษาหลายชิ้นแสดงให้เห็นว่าแอปพลิเคชันส่วนใหญ่ที่ใช้ API มักจะใช้เพียงส่วนเล็ก ๆ ของ API เท่านั้น [ 24 ]

การเชื่อมโยงภาษาก็คือ API เช่นกัน การเชื่อมโยงภาษาช่วยให้สามารถใช้ไลบรารีหรือบริการที่เขียนด้วยภาษาหนึ่งเมื่อพัฒนาด้วยภาษาอื่นได้ โดยการแมปคุณสมบัติและความสามารถของภาษาหนึ่งไปยังอินเทอร์เฟซที่เขียนด้วยภาษาอื่น[ 25 ]เครื่องมือต่างๆ เช่นSWIGและ F2PY ซึ่ง เป็นตัวสร้างอินเทอร์เฟซ Fortranเป็นPythonช่วยอำนวยความสะดวกในการสร้างอินเทอร์เฟซดังกล่าว[ 26 ]

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

ยิ่งไปกว่านั้น การควบคุมการไหลของโปรแกรมโดยรวมอาจอยู่นอกเหนือการควบคุมของผู้เรียกและอยู่ในมือของเฟรมเวิร์กโดยการกลับด้านการควบคุมหรือกลไกที่คล้ายกัน[ 27 ] [ 28 ]

ระบบปฏิบัติการ

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

LinuxและBerkeley Software Distributionเป็นตัวอย่างของระบบปฏิบัติการที่ใช้ API ของ POSIX [ 30 ]

ไมโครซอฟต์ได้แสดงความมุ่งมั่นอย่างแรงกล้าต่อ API ที่เข้ากันได้กับเวอร์ชันก่อนหน้า โดยเฉพาะอย่างยิ่งภายใน ไลบรารี Windows API (Win32) ดังนั้นแอปพลิเคชันรุ่นเก่าจึงสามารถทำงานบน Windows เวอร์ชันใหม่กว่าได้โดยใช้การตั้งค่าเฉพาะไฟล์ปฏิบัติการที่เรียกว่า "โหมดความเข้ากันได้" [ 31 ]ยังไม่ชัดเจนว่าการที่นักพัฒนาของไมโครซอฟต์เข้าถึง API ภายในของระบบปฏิบัติการของบริษัทนั้นเป็นข้อได้เปรียบมากน้อยเพียงใด Richard A. Shaffer จากTechnologic Computer Letterในปี 1987 เปรียบเทียบสถานการณ์นี้กับเกมเบสบอลที่ "ไมโครซอฟต์เป็นเจ้าของไม้เบสบอลและสนามทั้งหมด" [ 32 ]และผู้จำหน่ายรายใหญ่เช่นLotus DevelopmentและAshton-Tateได้รับข้อมูลเกี่ยวกับMS-DOS 5.0ที่นักพัฒนาซอฟต์แวร์รายเล็กไม่ได้รับ[ 33 ] อย่างไรก็ตามEd Esber จาก Ashton-Tate กล่าวในการสัมภาษณ์ในปี 1987 ว่า Bill Gatesบอกเขาว่านักพัฒนาของเขาบางครั้งต้องเขียนซอฟต์แวร์ใหม่โดยอิงจาก API รุ่นแรกๆ Gates กล่าวในการสัมภาษณ์ว่า แอปพลิเคชัน Apple Macintosh ของ Microsoft ประสบความสำเร็จมากกว่าแอปพลิเคชันสำหรับ MS-DOS เนื่องจากบริษัทของเขาไม่ต้องทุ่มเททรัพยากรให้กับMac OSด้วย[ 34 ]

API แตกต่างจากอินเทอร์เฟซไบนารีแอปพลิเคชัน (ABI) ตรงที่ API ใช้ซอร์สโค้ดเป็นพื้นฐาน ในขณะที่ ABI ใช้ไบนารี เป็น พื้นฐาน ตัวอย่างเช่นPOSIXมี API ในขณะที่Linux Standard Baseมี ABI [ 35 ] [ 36 ]

API ระยะไกล

API ระยะไกลช่วยให้นักพัฒนาสามารถจัดการทรัพยากรระยะไกลผ่านโปรโตคอลซึ่งเป็นมาตรฐานเฉพาะสำหรับการสื่อสารที่ช่วยให้เทคโนโลยีต่างๆ สามารถทำงานร่วมกันได้โดยไม่คำนึงถึงภาษาหรือแพลตฟอร์ม ตัวอย่างเช่น Java Database Connectivity API ช่วยให้นักพัฒนาสามารถสอบถามฐานข้อมูล ประเภทต่างๆ ได้มากมาย ด้วยชุดฟังก์ชันเดียวกัน ในขณะที่Java remote method invocation API ใช้ Java Remote Method Protocol เพื่ออนุญาตให้เรียกใช้ฟังก์ชันที่ทำงานจากระยะไกล แต่ปรากฏว่าทำงานในเครื่องของนักพัฒนา[ 37 ] [ 38 ]

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

การแก้ไขวัตถุพร็อกซีจะส่งผลให้เกิดการแก้ไขวัตถุระยะไกลที่สอดคล้องกันด้วย[ 39 ]

เว็บ API

เว็บ API คืออินเทอร์เฟซที่กำหนดไว้ซึ่งการโต้ตอบเกิดขึ้นระหว่างองค์กรและแอปพลิเคชันที่ใช้สินทรัพย์ขององค์กร ซึ่งก็คือข้อตกลงระดับบริการ (SLA) เพื่อระบุผู้ให้บริการฟังก์ชันและเปิดเผยเส้นทางบริการหรือ URL สำหรับผู้ใช้ API แนวทาง API คือแนวทางสถาปัตยกรรมที่มุ่งเน้นการจัดหาอินเทอร์เฟซโปรแกรมให้กับชุดบริการให้กับแอปพลิเคชันต่างๆ ที่ให้บริการผู้บริโภคประเภทต่างๆ[ 40 ]

เมื่อใช้ในบริบทของการพัฒนาเว็บ API มักถูกกำหนดให้เป็นชุดของข้อกำหนด เช่น ข้อความคำขอ Hypertext Transfer Protocol (HTTP) พร้อมกับคำจำกัดความของโครงสร้างของข้อความตอบกลับ ซึ่งโดยปกติจะอยู่ในรูปแบบ Extensible Markup Language ( XML ) หรือ JavaScript Object Notation ( JSON ) ตัวอย่างเช่น API ของบริษัทขนส่งที่สามารถเพิ่มลงในเว็บไซต์ที่เน้นอีคอมเมิร์ซเพื่ออำนวยความสะดวกในการสั่งซื้อบริการขนส่งและรวมอัตราค่าจัดส่งปัจจุบันโดยอัตโนมัติ โดยที่นักพัฒนาเว็บไซต์ไม่ต้องป้อนตารางอัตราของบริษัทขนส่งลงในฐานข้อมูลเว็บ ในขณะที่ "web API" ในอดีตแทบจะมีความหมายเหมือนกับweb serviceแนวโน้มล่าสุด (ที่เรียกว่าWeb 2.0 ) ได้เปลี่ยนจาก web services ที่ใช้ Simple Object Access Protocol ( SOAP ) และสถาปัตยกรรมแบบบริการ (SOA) ไปสู่​​web resourcesและสถาปัตยกรรมแบบทรัพยากร (ROA) ในรูปแบบ Representational State Transfer (REST) ​​ที่ตรงกว่า [ 41 ]ส่วนหนึ่งของแนวโน้มนี้เกี่ยวข้องกับการเคลื่อนไหวของSemantic Web ไปสู่ ​​Resource Description Framework (RDF) ซึ่งเป็นแนวคิดเพื่อส่งเสริม เทคโนโลยีวิศวกรรมออนโทโลยีบนเว็บเว็บ API อนุญาตให้รวม API หลายตัวเข้าด้วยกันเป็นแอปพลิเคชันใหม่ที่เรียกว่าmashup [ 42 ] ใน พื้นที่สื่อสังคมออนไลน์ เว็บ API ช่วยให้ชุมชนบนเว็บสามารถอำนวยความสะดวกในการแบ่งปันเนื้อหาและข้อมูลระหว่างชุมชนและแอปพลิเคชันต่างๆ ด้วยวิธีนี้ เนื้อหาที่สร้างขึ้นในที่หนึ่งสามารถโพสต์และอัปเดตไปยังหลายตำแหน่งบนเว็บได้อย่างไดนามิก[ 43 ]ตัวอย่างเช่น REST API ของ Twitter อนุญาตให้นักพัฒนาเข้าถึงข้อมูลหลักของ Twitter และ Search API มีวิธีการให้นักพัฒนาสามารถโต้ตอบกับข้อมูลการค้นหาและแนวโน้มของ Twitter ได้[ 44 ]

ออกแบบ

การออกแบบ API มีผลกระทบอย่างมากต่อการใช้งาน[ 6 ]หลักการของการซ่อนข้อมูลอธิบายบทบาทของอินเทอร์เฟซการเขียนโปรแกรมว่าช่วยให้การเขียนโปรแกรมแบบโมดูลาร์ เป็นไปได้ โดยการซ่อนรายละเอียดการใช้งานของโมดูล เพื่อให้ผู้ใช้โมดูลไม่จำเป็นต้องเข้าใจความซับซ้อนภายในโมดูล[ 45 ]ดังนั้น การออกแบบ API จึงพยายามจัดหาเฉพาะเครื่องมือที่ผู้ใช้คาดหวัง[ 6 ]การออกแบบอินเทอร์เฟซการเขียนโปรแกรมเป็นส่วนสำคัญของสถาปัตยกรรมซอฟต์แวร์ซึ่งเป็นการจัดระเบียบซอฟต์แวร์ที่ซับซ้อน[ 46 ]

นโยบายการเผยแพร่

API เป็นหนึ่งในวิธีการบูรณาการที่พบได้บ่อยในบริษัทเทคโนโลยี บริษัทที่ให้บริการและใช้ API ถือว่าเป็นสมาชิกของระบบนิเวศทางธุรกิจ[ 47 ]

นโยบายหลักสำหรับการเผยแพร่ API คือ: [ 48 ]

  • ส่วนตัว : API นี้มีไว้สำหรับใช้งานภายในบริษัทเท่านั้น
  • พันธมิตร : เฉพาะพันธมิตรทางธุรกิจที่ระบุเท่านั้นที่สามารถใช้ API ได้ ตัวอย่างเช่น บริษัท ให้เช่ารถอย่างUberและLyftอนุญาตให้นักพัฒนาบุคคลที่สามที่ได้รับอนุมัติสั่งรถได้โดยตรงจากภายในแอปของตน ซึ่งช่วยให้บริษัทเหล่านี้สามารถควบคุมคุณภาพได้โดยการคัดเลือกแอปที่สามารถเข้าถึง API และยังช่วยให้พวกเขามีรายได้เพิ่มขึ้นอีกด้วย[ 49 ]
  • สาธารณะ : API เปิดให้สาธารณะใช้งานได้ ตัวอย่างเช่นMicrosoftเปิดให้ ใช้งาน Windows APIและApple เผยแพร่ Cocoa API เพื่อให้สามารถเขียนซอฟต์แวร์สำหรับแพลตฟอร์ม ของตน ได้ ไม่ใช่ว่า API สาธารณะทั้งหมดจะสามารถเข้าถึงได้โดยทุกคน ตัวอย่างเช่น ผู้ให้บริการอินเทอร์เน็ต เช่น Cloudflare หรือ Voxility ใช้RESTful API เพื่ออนุญาตให้ลูกค้าและผู้ค้าปลีกเข้าถึงข้อมูลโครงสร้างพื้นฐาน สถิติ DDoS ประสิทธิภาพเครือข่าย หรือการควบคุมแดชบอร์ด[ 50 ]การเข้าถึง API ดังกล่าวจะได้รับอนุญาตโดยใช้ “โทเค็น API” หรือการตรวจสอบสถานะลูกค้า[ 51 ]

ผลกระทบของ API สาธารณะ

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

เมื่อส่วนต่างๆ ของ API ที่นำเสนอต่อสาธารณะอาจมีการเปลี่ยนแปลงและไม่เสถียร ส่วนต่างๆ ของ API นั้นๆ ควรได้รับการบันทึกอย่างชัดเจนว่าเป็น "ไม่เสถียร" ตัวอย่างเช่น ใน ไลบรารี Google Guavaส่วนที่ถือว่าไม่เสถียรและอาจมีการเปลี่ยนแปลงในเร็วๆ นี้ จะถูกทำเครื่องหมายด้วย คำอธิบาย ประกอบJava [ 53 ]@Beta

บางครั้ง API สาธารณะอาจประกาศส่วนต่างๆ ของตัวเองว่าล้าสมัยหรือถูกยกเลิก ซึ่งโดยปกติแล้วหมายความว่าส่วนนั้นของ API ควรได้รับการพิจารณาให้ลบออก หรือแก้ไขในลักษณะที่ไม่เข้ากันกับเวอร์ชันก่อนหน้า ดังนั้น การเปลี่ยนแปลงเหล่านี้จะช่วยให้นักพัฒนาสามารถเปลี่ยนไปใช้ส่วนอื่นๆ ของ API ที่จะถูกลบออกหรือไม่ได้รับการสนับสนุนในอนาคตได้[ 54 ]

รหัสไคลเอ็นต์อาจมีการใช้งานที่สร้างสรรค์หรือฉวยโอกาสซึ่งไม่ได้ตั้งใจโดยนักออกแบบ API กล่าวอีกนัยหนึ่ง สำหรับไลบรารีที่มีฐานผู้ใช้จำนวนมาก เมื่อองค์ประกอบกลายเป็นส่วนหนึ่งของ API สาธารณะ อาจมีการใช้งานในหลากหลายวิธี[ 55 ] เมื่อวันที่ 19 กุมภาพันธ์ 2020 Akamaiได้เผยแพร่รายงาน “สถานการณ์อินเทอร์เน็ต” ประจำปี ซึ่งแสดงให้เห็นถึงแนวโน้มที่เพิ่มขึ้นของอาชญากรไซเบอร์ที่มุ่งเป้าไปที่แพลตฟอร์ม API สาธารณะในบริการทางการเงินทั่วโลก ตั้งแต่เดือนธันวาคม 2017 ถึงเดือนพฤศจิกายน 2019 Akamai พบเห็นการโจมตีละเมิดข้อมูลประจำตัว 85.42 พันล้านครั้ง ประมาณ 20% หรือ 16.55 พันล้านครั้ง เป็นการโจมตีชื่อโฮสต์ที่กำหนดเป็นปลายทาง API ในจำนวนนี้ 473.5 ล้านครั้ง มุ่งเป้าไปที่องค์กรในภาคบริการทางการเงิน[ 56 ]

เอกสารประกอบ API

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

เอกสารประกอบมีความสำคัญอย่างยิ่งต่อการพัฒนาและการบำรุงรักษาแอปพลิเคชันที่ใช้ API [ 57 ] เอกสารประกอบ API โดยทั่วไปจะอยู่ในไฟล์เอกสาร แต่ยังสามารถพบได้ในสื่อสังคมออนไลน์ เช่น บล็อก ฟอรัม และเว็บไซต์ถามตอบ[ 58 ]

ไฟล์เอกสารแบบดั้งเดิมมักจะนำเสนอผ่านระบบเอกสาร เช่น Javadoc หรือ Pydoc ซึ่งมีลักษณะและโครงสร้างที่สอดคล้องกัน อย่างไรก็ตาม ประเภทของเนื้อหาที่รวมอยู่ในเอกสารจะแตกต่างกันไปในแต่ละ API [ 59 ]

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

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

เอกสาร API สามารถเสริมด้วยข้อมูลเมตา เช่นคำอธิบายประกอบ Javaเมตาเดตาเหล่านี้สามารถใช้โดยคอมไพเลอร์ เครื่องมือ และสภาพ แวดล้อม รันไทม์เพื่อนำพฤติกรรมที่กำหนดเองหรือการจัดการที่กำหนดเองมาใช้[ 61 ]

สามารถสร้างเอกสาร API ในลักษณะที่ขับเคลื่อนด้วยข้อมูลได้ โดยการสังเกตโปรแกรมจำนวนมากที่ใช้ API ที่กำหนด จะสามารถอนุมานการใช้งานทั่วไป รวมถึงสัญญาและคำสั่งที่จำเป็นได้[ 62 ]จากนั้นสามารถใช้เทมเพลตเพื่อสร้างภาษาธรรมชาติจากข้อมูลที่ขุดได้

ในปี 2553 บริษัท Oracle Corporation ฟ้อง Google เนื่องจากได้เผยแพร่การใช้งาน Java เวอร์ชันใหม่ที่ฝังอยู่ในระบบปฏิบัติการ Android [ 63 ] Google ไม่ได้รับอนุญาตใดๆ ในการสร้าง Java API ขึ้นมาใหม่ แม้ว่าจะได้รับอนุญาตให้กับโครงการ OpenJDK ที่คล้ายกันก็ตาม ผู้พิพากษาWilliam Alsupตัดสินใน คดี Oracle v. Googleว่า API ไม่สามารถจดลิขสิทธิ์ได้ในสหรัฐอเมริกา และหาก Oracle ชนะคดี จะเป็นการขยายการคุ้มครองลิขสิทธิ์ไปสู่ ​​"ชุดสัญลักษณ์ที่ใช้งานได้" และอนุญาตให้จดลิขสิทธิ์คำสั่งซอฟต์แวร์ง่ายๆ ได้

การยอมรับข้อเรียกร้องของ Oracle จะเป็นการอนุญาตให้ใครก็ตามจดลิขสิทธิ์โค้ดเวอร์ชันหนึ่งเพื่อดำเนินการระบบคำสั่ง และด้วยเหตุนี้จึงห้ามไม่ให้ผู้อื่นเขียนเวอร์ชันที่แตกต่างกันเพื่อดำเนินการคำสั่งเดียวกันทั้งหมดหรือบางส่วน[ 64 ] [ 65 ]

คำตัดสินของ Alsup ถูกพลิกกลับในปี 2014 ในการอุทธรณ์ต่อศาลอุทธรณ์แห่งวงจรของรัฐบาลกลางแม้ว่าคำถามที่ว่าการใช้ API ดังกล่าวถือเป็นการใช้ที่เป็นธรรม หรือ ไม่ยังคงไม่ได้รับการแก้ไข[ 66 ] [ 67 ]

ในปี 2016 หลังจากการพิจารณาคดีเป็นเวลาสองสัปดาห์ คณะลูกขุนตัดสินว่าการนำ Java API ของ Google มาใช้ใหม่นั้นถือเป็นการใช้งานโดยชอบธรรมแต่ Oracle สาบานว่าจะอุทธรณ์คำตัดสิน[ 68 ] Oracle ชนะการอุทธรณ์ โดยศาลอุทธรณ์แห่งรัฐบาลกลางตัดสินว่าการใช้ API ของ Google ไม่เข้าข่ายการใช้งานโดยชอบธรรม[ 69 ]ในปี 2019 Google ยื่นอุทธรณ์ต่อศาลฎีกาแห่งสหรัฐอเมริกาเกี่ยวกับทั้งคำตัดสินเรื่องลิขสิทธิ์และการใช้งานโดยชอบธรรม และศาลฎีกาได้อนุมัติการพิจารณาคดี[ 70 ]เนื่องจากการระบาดของโรคโควิด-19การพิจารณาคดีด้วยวาจาจึงถูกเลื่อนออกไปจนถึงเดือนตุลาคม 2020 [ 71 ]

ศาลฎีกาตัดสินคดีให้เป็นไปใน favor ของ Google [ 72 ]

ตัวอย่าง

ดูเพิ่มเติม

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

  • Bucher, Taina (16 พฤศจิกายน 2013). "วัตถุแห่งความรู้สึกอันรุนแรง: กรณีของ Twitter API" . วัฒนธรรมการคำนวณ (3). ISSN  2047-2390 .โต้แย้งว่า "API ไม่ใช่เครื่องมือที่เป็นกลาง" และเป็นส่วนสำคัญของการเขียนโปรแกรมในยุคปัจจุบัน ซึ่งถือเป็นส่วนพื้นฐานของวัฒนธรรม
  • ออนเดรจกา, คอรี (28 กุมภาพันธ์ 2014). "มอรี นวัตกรรม และการเปลี่ยนแปลง" . ในปี 1853 เขาได้กล่าวปาฐกถาหลักในการประชุมอนุสัญญาทางทะเลที่กรุงบรัสเซลส์ ซึ่งเขาเสนอรูปแบบการรายงานข้อมูลทางอุตุนิยมวิทยาที่เป็นมาตรฐาน — หากเป็นปี 2005 เขาคงเสนอ API สาธารณะเพื่อให้คอมพิวเตอร์สามารถสื่อสารกันได้ — เพื่อให้สามารถรวบรวมข้อมูลได้อย่างมีประสิทธิภาพและแม่นยำยิ่งขึ้น( แปลง URL เป็นข้อความ )
  • ศาลฎีกาสหรัฐฯ “ API คืออะไร? ” ในคำตัดสินของศาลในคดีGoogle v. Oracle ปี 2021หน้า 3–7 ระบุว่า “สำหรับแต่ละงาน จะมีรหัสคอมพิวเตอร์ ; API (หรือที่รู้จักกันในชื่อ Application Program Interface) คือวิธีการเรียกใช้ ‘รหัสคอมพิวเตอร์’ นั้น (คำสั่ง – เหมือนสูตรอาหาร – ไม่ใช่คำสั่งทำอาหาร นี่คือ คำสั่ง ของเครื่องจักร ) เพื่อนำไปปฏิบัติ”
  • Forrester : อุตสาหกรรมไอที : กรณีศึกษา API : Google กับ Oracle – 20 พฤษภาคม 2021 – รูปแบบเนื้อหา: ไฟล์เสียงพร้อมข้อความ – ความยาว 26:41
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=API&oldid=1360602768 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ API

อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน ( API ) คือการเชื่อมต่อระหว่างคอมพิวเตอร์หรือระหว่างโปรแกรมคอมพิวเตอร์เป็นอินเทอร์เฟซซอฟต์แวร์ ประเภทหนึ่ง ที่ให้บริการแก่ซอฟต์แวร์อื่นๆ

วัตถุประสงค์

API เปิดระบบซอฟต์แวร์ให้มีการโต้ตอบจากภายนอก ช่วยให้ระบบซอฟต์แวร์สองระบบสามารถสื่อสารกันข้ามขอบเขต — อินเทอร์เฟซ — โดยใช้สัญญาณที่ตกลงร่วมกัน [ 4 ] กล่าวอีกนัยหนึ่ง API เชื่อมต่อเอนทิตีซอฟต์แวร์เข้าด้วยกัน ต่างจาก อินเทอร์เฟซผู้ใช้ API...

ประวัติความเป็นมาของคำนี้

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

ห้องสมุดและเฟรมเวิร์ก

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