API กับ Webservice [ปิด]


205

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


3
โดย API คุณหมายถึง API ที่เข้าถึงโดย HTTP หรือไม่ หรือเพียงแค่ API ธรรมดาธรรมดา
Pablo Santa Cruz



คุณต้องหลอกฉัน 122 upvotes และคำถามถูกทำลายเนื่องจากระดับการผสม
Joshua

คุณได้ฉันฉันไม่แน่ใจว่าทำไมคำถามนี้ถูกปิด
ชิป

คำตอบ:


173

API (Application Programming Interface) เป็นวิธีการที่บุคคลที่สามสามารถเขียนรหัสที่เชื่อมต่อกับรหัสอื่น ๆ Web Service เป็น API ประเภทหนึ่งที่ทำงานเกือบตลอดเวลาผ่าน HTTP (แม้ว่าบางอย่างเช่น SOAP สามารถใช้การขนส่งทางเลือกเช่น SMTP) นิยาม W3C อย่างเป็นทางการกล่าวว่าบริการเว็บไม่จำเป็นต้องใช้ HTTP แต่นี้เป็นเกือบทุกกรณีและมักจะสันนิษฐานเว้นแต่ระบุไว้

สำหรับตัวอย่างของบริการเว็บโดยเฉพาะเห็นสบู่ , RESTและXML-RPC สำหรับตัวอย่างของประเภทอื่นของ API หนึ่งเขียนใน C สำหรับการใช้งานบนเครื่องท้องถิ่นให้ดูLinux Kernel API

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


8
คุณคิดว่าทุกบริการบนเว็บเป็น API หรือไม่ วิธีการเกี่ยวกับเมื่อใช้ AJAX เพื่อโหลดพื้นที่ของหน้าเว็บเมื่อเทียบกับการโหลดหน้าทั้งหมด? ฉันไม่จำเป็นต้องเห็นสิ่งนี้ว่าเป็น API แม้ว่าจะมีเว็บเซอร์วิสที่เกี่ยวข้อง มิฉะนั้นเราสามารถสร้างกรณีที่ทุกบิตของฟังก์ชั่นที่เคยสร้างไม่ว่าจะเป็นใน DLL หรือ JAR, บริการเว็บหรือรหัสธรรมดาเป็น API ทั้งหมด เพื่อให้ API เป็น API จะต้องมีนักพัฒนาบุคคลที่สามอยู่ในใจและ API ไม่ควรขึ้นอยู่กับผลิตภัณฑ์ขั้นสุดท้าย (แอปที่ใช้ API)
Ronald

18
ใช่ทุกบริการบนเว็บเป็น API ใช่ AJAX Web Service เป็น API เป็นเพียงเอกสารที่ไม่มีเอกสารดังนั้นจึงไม่ได้มีไว้สำหรับการบริโภคสาธารณะ ไม่ใช่ทุก ๆ API นั้นเป็น API ที่ออกแบบมาสำหรับการบริโภคของบุคคลที่สาม คุณสามารถมี API ภายในได้เช่นกัน
Ryan Shillington

54

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

คุณสามารถมี API ได้ดีและวิธีหลักในการโต้ตอบกับ API นั้นคือผ่านเว็บเซอร์

คำจำกัดความทางเทคนิค (ความอนุเคราะห์จาก Wikipedia) คือ:

API

application programming interface (API) คือชุดของรูทีนโครงสร้างข้อมูลคลาสอ็อบเจ็กต์และ / หรือโปรโตคอลที่จัดเตรียมโดยไลบรารีและ / หรือบริการระบบปฏิบัติการเพื่อสนับสนุนการสร้างแอปพลิเคชัน

บริการเว็บ

บริการบนเว็บ (เช่นบริการบนเว็บ) ถูกกำหนดโดย W3C ว่า "ระบบซอฟต์แวร์ที่ออกแบบมาเพื่อรองรับการทำงานร่วมกันระหว่างเครื่องกับเครื่องผ่านเครือข่าย"


4
ฉันตกลงกับบางคนคัดค้านคำตอบของฉัน แต่ฉันอยากรู้ว่าทำไม
Mark Biek

41
การตอบกลับของคุณแสดงว่า API และ Webservices นั้นแตกต่างกันเมื่อในความเป็นจริงบริการบนเว็บเป็นประเภทของ API เนื่องจากประเด็นสำคัญของคำถามนี้คือความแตกต่างระหว่างสองสิ่งนี้สิ่งสำคัญคือการตอบสนองเพื่อชี้แจงว่า webservices เป็นประเภทของ API
Andrew Cholakian

3
น่าสนใจ ฉันจะต้อง (นับถือ :)) ไม่เห็นด้วย แต่ฉันขอขอบคุณข้อเสนอแนะ
Mark Biek

44

ในความหมายทั่วไป webservice IS API ผ่าน HTTP พวกเขามักจะใช้ JSON หรือ XML แต่ก็มีวิธีการอื่นเช่นกัน


20
ดังนั้น webservices ทั้งหมดจึงเป็น API แต่ไม่ใช่ webservice ของ API ทั้งหมดใช่ไหม
ชิป

13
ขวา APIs สามารถเป็นไลบรารีเช่น DLLs, JARs หรือ OCX ฯลฯ ได้นอกจากนี้ยังสามารถเผยแพร่ซอร์สโค้ดเช่น Facebook 'PHP api ...
cgp

10

API เป็นส่วนต่อประสานที่เผยแพร่ซึ่งกำหนดว่าองค์ประกอบ A สื่อสารกับส่วนประกอบ B ได้อย่างไร

ตัวอย่างเช่น Doubleclick มี Java API ที่เผยแพร่ซึ่งอนุญาตให้ผู้ใช้สอบถามตารางฐานข้อมูลเพื่อรับข้อมูลเกี่ยวกับแคมเปญโฆษณาออนไลน์ของพวกเขา

เช่นโทร GetNumberClicks (ชื่อผู้ใช้)

ในการใช้ API คุณจะต้องเพิ่มไฟล์ Doubleclick .jar ให้กับคลาสพา ธ ของคุณ การโทรเป็นแบบท้องถิ่น

บริการเว็บเป็นรูปแบบของ API ที่อินเตอร์เฟสถูกกำหนดโดย WSDL สิ่งนี้อนุญาตให้มีการเรียกใช้อินเทอร์เฟซระยะไกลผ่าน HTTP

หาก Doubleclick ใช้อินเทอร์เฟซของพวกเขาเป็นบริการบนเว็บ

ผู้ใช้ระยะไกลจะเรียกบริการเว็บ

เช่นโทร GetNumberClicksWebService (ชื่อผู้ใช้)

และบริการ GetNumberClicksWebService จะเรียกใช้ GetNumberClicks ภายในเครื่อง


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

7

API (Application Programming Interface) รูปแบบที่สมบูรณ์นั้นแสดงให้เห็นว่าเป็นส่วนต่อประสานที่อนุญาตให้คุณตั้งโปรแกรมสำหรับแอปพลิเคชันของคุณด้วยความช่วยเหลือหรือการสนับสนุนของส่วนต่อประสานอื่น ๆ ของแอพพลิเคชั่น

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


4

API เป็นการรวมที่อิงกับโค้ดในขณะที่บริการบนเว็บเป็นการรวมข้อความเข้ากับมาตรฐานที่ใช้งานร่วมกันได้ซึ่งมีสัญญาเช่น WSDL


ฉันไม่แน่ใจว่าคำตอบของคุณเพิ่มอะไรลงไปในคำตอบที่มีอยู่
andrewsi

3

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


1

ตรวจสอบhttp://en.wikipedia.org/wiki/Web_serviceนี้

ดังกล่าวถึงการเชื่อมโยงแล้ว Web API คือการพัฒนาบริการบนเว็บที่น่าจะเกี่ยวข้องกับ Web 2.0 มากที่สุดในขณะที่บริการที่ใช้ SOAP จะถูกแทนที่ด้วยการสื่อสารที่ใช้ REST โปรดทราบว่าเซอร์วิส REST ไม่ต้องการข้อกำหนด XML, SOAP หรือ WSDL service-API ดังนั้นนี่จึงเป็นสิ่งสำคัญที่แตกต่างจากเว็บเซอร์วิสดั้งเดิม


0

อีกตัวอย่างหนึ่ง: google map api vs google direction api บริการเว็บในขณะที่อดีตให้บริการ (ส่ง) ไฟล์จาวาสคริปต์ไปยังเว็บไซต์ (ซึ่งสามารถใช้เป็น api เพื่อสร้างฟังก์ชั่นใหม่) ในภายหลังคือบริการเว็บส่วนที่เหลือส่งข้อมูล ( ในรูปแบบ json หรือ xml) ซึ่งสามารถประมวลผลได้ (แต่ไม่ได้ใช้ในความหมาย API)


1
อืมมม ... จาวาสคริปต์สามารถส่งคืนเป็นข้อมูลและใช้เป็นรหัสได้ซึ่งไม่ใช่ความคมชัดที่ถูกต้อง
David C
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.