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.