เว็บ API ทำงานอย่างไร [ปิด]


17

ฉันเคยได้ยิน API ของเว็บมากมายเช่น Facebook, Twitter และอื่น ๆ ซึ่งช่วยให้บุคคลที่สามเข้าถึงข้อมูลและจัดการกับมัน ฉันต้องการทราบว่าเว็บ API ทำงานอย่างไร พื้นฐานของ web API คืออะไร?

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


1
ไม่ใช่ว่ามันสำคัญอย่างยิ่ง แต่เว็บไซต์ของคุณสร้างด้วยภาษาอะไร
ocodo

คุณอ่านเอกสารสำหรับ facebook web API แล้วหรือยัง developers.facebook.com/docs หากคุณยังไม่ได้อ่านทำไมล่ะ? ถ้าคุณมีอ่านสิ่งที่เฉพาะเจาะจงคำถามคุณมี?
S.Lott

ตกลงฉันจะทำ @ S.Lott!
Harish Kurup

คำตอบ:


23

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

เพิ่มในระบบการรับรองความถูกต้องถ้าจำเป็นและคุณมี Web API แบบง่าย ๆ

เว็บ APIเป็นเพียงการเชื่อมต่อเพื่อให้สามารถเข้าถึงระบบของคุณ (เช่นเดียวกัน) ผ่านมาตรฐานวิธีการร้องขอ HTTP ข้อมูลมักจะถูกห่อในรูปแบบมาตรฐานบางอย่าง (เช่นJSONหรือXML ) เพื่อให้ง่ายต่อการจัดการ


นี่คือตัวอย่างเว็บ API สำหรับ 'TextWise'


ตกลง. รูปแบบของข้อมูลที่ดีที่สุดในการใช้ JSON หรือ XML
Harish Kurup

1
JSON - XML ​​เป็นเรื่องยากมากที่จะจัดการและไม่ได้ให้ประโยชน์ใด ๆ กับ JSON และใน XML คุณจะมีค่าใช้จ่ายจำนวนมากเพราะคุณต้องมีแท็กปิด
Slawek

1
@Harish อีกครั้งมันเป็นหนึ่งในนั้นขึ้นอยู่กับวัตถุประสงค์ / สถานการณ์ของคุณ ในขณะที่ฉันอาจชอบรูปแบบ JSON ถ้าฉันทำเพื่อหนึ่งในระบบของเราในที่ทำงานฉันจะใช้ XML เนื่องจากมีความสามารถในการแยกวิเคราะห์ XML inbuilt แต่ไม่ใช่ JSON ซึ่งหมายความว่าการบำรุงรักษารหัสทำได้ง่ายขึ้นและผู้พัฒนารายอื่นจะคุ้นเคยกับคำสั่ง
Dan McGrath

1
@Harish เป็นความคิดที่ดีที่จะให้ความสำคัญและเผยแพร่ก่อน แต่เพื่อให้ทั้ง XML และ JSON จะช่วยผู้ใช้ของคุณ
ocodo

ในทางปฏิบัติ XML และ JSON gzip กับขนาดไฟล์ที่คล้ายกัน ฉันเห็นแนวโน้มค่อยๆเปลี่ยนไปใช้ JSON (JSON ใหม่กว่า XML) แม้ว่าในขณะนี้เป็นเรื่องธรรมดามากที่จะให้ทั้งคู่ JSON เหมาะสำหรับการแลกเปลี่ยนข้อมูลในขณะที่ XML เหมาะสำหรับการแลกเปลี่ยนเอกสาร
Brian

5

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

URL ของฉันมีลักษณะดังนี้:

domain.com/method/call/subcall?key=key&data=something

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

โดยปกติแล้วฉันจะคืนค่าอาร์เรย์ที่เข้ารหัสของ JSON สองรายการโดยหนึ่งจะถูกresultบอกว่าถ้าการโทรสำเร็จและให้รหัสข้อผิดพลาด / สตริงข้อผิดพลาดถ้าไม่ ปกติจะเรียกอีกอย่างหนึ่งว่าdataและเนื้อหาของที่อธิบายไว้ในเอกสารประกอบของการโทรนั้น นอกจากนี้ API ของ GET ยังง่ายต่อการทดสอบและดีบักอีกด้วย

มีรูปแบบอื่น ๆ อีกมากมายเช่น SOAP / XMLRPC ฉันเพิ่งพบว่าการเลือก JSON ทำให้ฉันมีความเรียบง่ายและอิสระในการเลือกอย่างไม่น่าเชื่อ

ตัวอย่างเช่นถ้าฉันต้องการส่งฟิลด์จำนวนมากและไม่ต้องการจัดการกับตัวแปร GET จำนวนมากฉันสามารถทำได้ (ตัวอย่างใน PHP)

$to_send = base64_encode(json_encode($some_array));

นั่นคือถอดรหัสได้อย่างง่ายดายในอีกด้านหนึ่งให้ฉันหลายสิบตัวแปรที่จะทำงานกับในขณะที่ยังคงยอมรับเฉพาะตัวแปร GET 2 - 3 ผ่าน API

ฉันเพียงแค่พยายามทำให้วิธีการของฉันและเรียกสั้น ๆ และกระชับและออกแบบในลักษณะที่แต่ละสายส่งกลับการตอบสนอง 'ทำงานหรือล้มเหลว' เหมือนกันตามด้วยข้อมูลที่ร้องขอ


2

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

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

การเรียกขั้นตอนระยะไกล (RPC)

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

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

การโอนย้ายสถานะของรัฐนำเสนอ (REST)

ใน REST style API คุณไม่มี URL สำหรับ API เป็นพื้นที่ชื่อ : เซิร์ฟเวอร์หรือโฟลเดอร์ภายในเซิร์ฟเวอร์ที่มีวัตถุที่แตกต่างกันจำนวนมากและ URL ทุกรายการในเนมสเปซนี้กลายเป็นส่วนหนึ่ง ของ API แทนที่จะบอกเซิร์ฟเวอร์ที่คุณต้องการที่จะใช้ API, URL ที่บอกเซิร์ฟเวอร์สิ่งที่คุณต้องการที่จะใช้ API บน จากนั้นคุณใช้วิธี HTTP และอาจร้องขอเนื้อหาเพื่ออธิบายสิ่งที่คุณต้องการทำกับวัตถุนั้น: GET (ดึงสิ่งที่มีอยู่แล้ว), POST (สร้างสิ่งใหม่), PUT (แทนที่สิ่งที่มีอยู่แล้ว) หรือ ลบ (กำจัดสิ่งที่มีอยู่แล้ว) มีคำกริยาอื่น ๆ อีกสองสามคำที่คุณสามารถใช้ได้

จนถึงตอนนี้ฉันยังไม่ได้พูดถึงรูปแบบมาตรฐานสำหรับ REST ในทางทฤษฎีคุณสามารถใช้รูปแบบใดก็ได้ HTTP จัดเตรียมไว้เพื่อบอกสิ่งที่คุณต้องการทำและสิ่งที่คุณต้องการจะทำดังนั้นรูปแบบของคำขอเนื้อหาอาจเป็นอะไรก็ได้: การเป็นตัวแทนของวัตถุที่คุณต้องการสร้างหรือแทนที่ แต่ในทางปฏิบัติผู้เขียน REST มักจะเห็นด้วยกับรูปแบบต่อไปเพราะมันยากที่จะเข้าใจทุกรูปแบบที่เป็นไปได้

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