คำถามติดแท็ก web-api

API เฉพาะที่สื่อสารผ่านเว็บโปรโตคอลเช่น ASP.net Web API ตลอดจน API ที่เปิดเผยหน้าเว็บสำหรับการสื่อสารบนเครือข่ายหรือแอปสำหรับการสื่อสารของอุปกรณ์

1
Open Data Protocol (odata) ได้รับการยอมรับอย่างกว้างขวางจากชุมชนการพัฒนาหรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว แก้ไข: ในกรณีที่คุณไม่คุ้นเคยกับ odata ไปเลย ฉันกำลังพยายามที่จะตรวจสอบว่ามันคุ้มค่าที่จะเรียนรู้เทคโนโลยีนี้หรือว่ามันเป็นสิ่งที่จะไม่ติด สถานที่ตั้งเป็นที่น่าสนใจและในฐานะผู้พัฒนา API ดูเหมือนว่าเป็นวิธีที่ดีในการมอบความยืดหยุ่นให้กับผู้พัฒนาที่ใช้งานพวกเขา น่าเสียดายที่ฉันไม่เห็น "ฉวัดเฉวียน" มากเกี่ยวกับ Open Data Protocol ในช่วงสองสามปีที่ผ่านมาดังนั้นเพียงแค่พยายามที่จะประเมินว่ามันมีโอกาสที่จะอยู่ใกล้ ๆ เมื่อฉันเรียนรู้ ขอบคุณล่วงหน้า.

3
การใช้ยัติภังค์ในคีย์ JSON เป็นเรื่องที่ผิดหรือไม่?
ฉันเห็นคำถามมากมายเกี่ยวกับการเข้าถึงคีย์ JSON ที่ใช้ยัติภังค์ (กรณีเคบับ) แต่ตอนนี้ฉันพบว่าตัวเองสงสัยว่าฉันควรติดกับ camelCase หรือ snake_case ในกุญแจของฉัน ฉันรู้ว่ายัติภังค์สามารถสร้างการแมปที่ซับซ้อนได้เมื่อทำการย้ายระหว่างภาษา ฉันเคยเห็นไลบรารี่ของ JSON ที่ทำการ deserialize แปลงคีย์เหล่านั้นเป็นรูปแบบ camelCase ตัวอย่าง: var something = { "some-value": 'thing' } Vs var something = { "someValue": 'thing', "some_other_value": 'thing_two' }

3
วิธีการออกแบบ REST API เพื่อจัดการกับการดำเนินการที่ไม่ใช่ CRUD?
ฉันพยายามแปลงชุดบริการที่ใช้ SOAP เป็น RESTful API Subscriptionผมเริ่มด้วยการระบุทรัพยากรโดยการวิเคราะห์ชื่อการดำเนินงานและผมได้ทรัพยากร เมื่อฉันต้องการอัปเดตสถานะการสมัครสมาชิกฉันไม่สามารถส่งPOSTคำขอไปยังเซิร์ฟเวอร์ได้เพราะฉันไม่สามารถเข้าถึงทรัพยากรได้โดยตรง แต่ฉันต้องเรียกการดำเนินงานสไตล์ RPC บางอย่างเพื่ออัปเดตคุณสมบัติของพวกเขา นอกจากนี้เฉพาะในกรณีที่ฉันเปลี่ยนสถานะของการสมัครเป็น "ใช้งานอยู่" ต้องทำการโทรเพิ่มเติมไปยังบริการภายนอก ในกรณีเหล่านี้แนวทางปฏิบัติที่ดีที่สุดในการจัดการการปฏิบัติงานพื้นฐานคืออะไร วิธีแก้ปัญหาที่ฉันพบคือการใช้พารามิเตอร์ข้อความค้นหาดังนั้นหากฉันต้องการเรียกใช้บริการการเปิดใช้งานฉันสามารถใช้สิ่งต่อไปนี้ POST /subscriptions/{subscriptionid}/?activate=true เมื่อพิจารณาว่าฉันไม่สามารถอัปเดตฟิลด์วัตถุการสมัครของฉันโดยตรงมีวิธีปฏิบัติที่ดีที่สุดในการจัดการการแปลงประเภทนี้หรือไม่ อัปเดต 1: ฉันสามารถใส่ค่า POST ลงในเนื้อหาได้เช่น "state": "active" และตรวจสอบภายในบริการของฉันการดำเนินการที่เหมาะสมที่จะถูกเรียก

1
จุดเชื่อมโยง rel =“ ตัวเอง” ใน REST API คืออะไร?
ฉันมักจะเห็นสิ่งต่อไปนี้ในเอกสาร HTML <link rel="self" href="http://example.com/something"> หรือเช่นนี้ใน JSON link: { rel="self", href="http://example.com/something" } หรือใน XML <atom:link rel="self" href="http://example.com/something" /> ดังนั้นฉันมีคำถาม: ทำไมรวมลิงค์นี้ มีข้อดีอะไรบ้าง? (โปรดบอกฉันว่ามันมีเหตุผลและมันไม่ใช่แค่ "การปฏิบัติที่ดี" เครื่องราง) ฉันจะใช้ประโยชน์จากลิงก์นี้ในลูกค้าของฉันได้อย่างไร กรณีการใช้งานของลิงค์นี้มีอะไรบ้าง? เมื่อใดที่ฉันไม่ควรใช้ลิงก์นี้ เมื่อไรจึงจะไม่มีประโยชน์ที่จะรวมไว้
11 rest  web-api 

2
REST API สามารถส่งคืนทรัพยากรจำนวนมากเป็นทรัพยากรทรัพยากรเดียวได้หรือไม่
ฉันอยู่ระหว่างดำเนินการสร้าง REST API และขณะนี้ฉันกำลังประสบปัญหาดังต่อไปนี้: Fooเป็นทรัพยากรแรก การดำเนินการ CRUD สามารถนำไปใช้ผ่าน/foo/URI Barเป็นทรัพยากรที่สอง การดำเนินการ CRUD สามารถนำไปใช้ผ่าน/bar/URI ทุกคนมีความเกี่ยวข้องกับศูนย์หรือหนึ่งFoo Barเหตุผลที่ฉันไม่ถือว่าBarเป็นแหล่งข้อมูลย่อยของFooคือเนื่องจากBarอินสแตนซ์เดียวกันสามารถใช้ร่วมกันระหว่าง mutiple Foos ดังนั้นผมจึงคิดว่ามันจะดีกว่าที่จะเข้าถึงได้ผ่านทางเป็นอิสระ URI /foo/[id]/barแทน ปัญหาของฉันคือในกรณีจำนวนมากลูกค้าที่ขอFooอินสแตนซ์ก็สนใจBarอินสแตนซ์ที่เกี่ยวข้องเช่นกัน ขณะนี้หมายความว่าพวกเขาจะต้องดำเนินการสองแบบสอบถามแทนหนึ่งแบบสอบถาม ฉันต้องการแนะนำวิธีที่ช่วยให้รับวัตถุทั้งสองด้วยการสืบค้นเพียงครั้งเดียว แต่ฉันไม่รู้วิธีจำลอง API สำหรับการทำ สิ่งที่ฉันมาด้วย: ฉันสามารถแนะนำพารามิเตอร์การสืบค้นที่คล้ายกับสิ่งนี้: /foo/[id]?include_bar=true. ปัญหาด้วยวิธีการนี้คือการเป็นตัวแทนทรัพยากร (เช่นโครงสร้าง JSON) ของการตอบสนองจะต้องดูแตกต่างกัน (เช่นภาชนะเช่น{ foo: ..., bar: ... }แทนที่จะเป็นแบบอนุกรมFoo) ซึ่งทำให้Fooจุดสิ้นสุดของทรัพยากร "แตกต่าง" ฉันไม่คิดว่ามันเป็นสิ่งที่ดี เมื่อทำการสอบถาม/fooลูกค้าควรได้รับการแสดงทรัพยากรเดียวกัน (โครงสร้าง) เสมอโดยไม่คำนึงถึงพารามิเตอร์การสืบค้น /fooandbar/[foo-id]ความคิดก็คือการแนะนำปลายทางอ่านอย่างเดียวใหม่เช่น ในกรณีนี้จะไม่มีปัญหาในการส่งคืนการแสดงแทนเช่น{ foo: ..., bar: ... …

2
จะหลีกเลี่ยงการใช้ API โดยไม่ได้รับอนุญาตได้อย่างไร
ฉันต้องออกแบบ "วิดเจ็ต" สคริปต์ที่พันธมิตรจะฝังไว้ในเว็บไซต์ของพวกเขาเพื่อแสดง UI และโทรหา API ของเรา โดยพื้นฐานแล้วมันจะแสดงข้อมูลของเราในเว็บไซต์เหล่านี้โดยอ้างอิงจาก ID บางรหัสที่พวกเขาให้ไว้ในการเรียก API สิ่งที่เราต้องการหลีกเลี่ยงคือมีคนใช้ API ในทางที่ผิดและใช้ขูดแคตตาล็อกทั้งหมดของเรา พันธมิตรแต่ละรายที่ฝังสคริปต์ของเราจะได้รับกุญแจสาธารณะที่จะต้องให้เมื่อเรียก API แนวคิดจะขอให้พวกเขาต่อท้ายคีย์นี้เมื่อโหลดสคริปต์เช่น: <script src="//initrode.com/widget/loader.js?key=xxxx"></script> ด้วยวิธีนี้คำขอสำหรับสคริปต์สามารถใช้ในการลงทะเบียนคู่ของคีย์ / แหล่งที่มา IP และตอบรับการเรียก API ที่ตามมาเฉพาะในกรณีที่คู่คีย์ / IP ตรงกับคู่ที่ลงทะเบียนแล้ว (มีอายุการใช้งาน จำกัด และ จำกัด คำขอต่อวัน) ฉันไม่แน่ใจว่าเป็นความคิดที่ดีเพราะเห็นได้ชัดว่าการรักษาความปลอดภัยด้วยการทำให้งงงวย (มีคนโหลดสคริปต์จะข้ามมันอย่างสมบูรณ์); แต่ฉันไม่เห็นวิธีอื่น ๆ ในการ จำกัด การเข้าถึง ฉันไม่สามารถให้รหัสที่ไม่ซ้ำกับผู้ใช้ทุกคนเฉพาะกับพันธมิตร ฉันไม่สามารถใช้ระบบกุญแจส่วนตัวได้เนื่องจากทุกรหัสจะมีให้สำหรับทุกคน โดยทั่วไปจะ จำกัด การเข้าถึง API สาธารณะเช่นขัดแย้งกับคำจำกัดความ คุณคิดอย่างไรกับวิธีนี้และคุณจะทำอย่างไรกับข้อ จำกัด …

1
รูปแบบเพื่อแบ่งปันวัตถุระหว่าง API และแอปพลิเคชัน
ฉันมีข้อสงสัยอย่างมากเกี่ยวกับการออกแบบสำหรับเว็บแอปพลิเคชันของฉัน ฉันต้องการแยกตรรกะทางธุรกิจออกจากส่วนติดต่อดังนั้นฉันจึงสร้าง Web API ที่จัดการคำขอทั้งหมดไปยังฐานข้อมูล มันเป็น ASP.NET Web API พร้อม Entity framework และหน่วยการทำงานและรูปแบบพื้นที่เก็บข้อมูลทั่วไป จนถึงตอนนี้ทุกอย่างดี ปัญหา ที่ฉันต้องการความช่วยเหลือฉันไม่สามารถหาวิธีที่มีประสิทธิภาพในการแชร์ออบเจ็กต์ระหว่าง API และแอปพลิเคชัน ฉันไม่ต้องการที่จะทำให้เป็นลำดับวัตถุวัตถุโดยตรงฉันคิดว่ามันจะเป็นวิธีปฏิบัติที่ไม่ดีเพราะถ้ารูปแบบนิติบุคคลมีการเปลี่ยนแปลงฉันสามารถจบลงด้วยวัตถุขนาดใหญ่ที่ทำให้เป็นอันดับโดยไม่มีเหตุผล วิธีการใช้งานตอนนี้ เนื่องจากอินเทอร์เฟซของฉันคือ ASP.NET เว็บแอปพลิเคชันใน C # และ API ของฉันอยู่ใน C # ฉันจึงสร้างไลบรารีทั่วไปพร้อมคำจำกัดความของคลาสทั้งหมดของฉันที่ฉันต้องการแชร์ระหว่างพวกเขา ฉันรู้ว่าวิธีแก้ปัญหาจะไม่ทำงานเมื่อฉันจะพัฒนาแอพ Android ฉันจะต้องสร้างคลาสของฉันอีกครั้งใน Java แต่นั่นไม่ใช่ปัญหาที่ใหญ่ที่สุดของฉัน ปัญหาคือฉันรู้สึกว่าฉันมักจะแปลงวัตถุของฉัน ตัวอย่าง นี่คือตัวอย่างของกระบวนการทำงานของฉัน: ฉันเริ่มต้นด้วยโมเดลที่มีวัตถุทั้งหมดและบันทึกย่อข้อมูลสำหรับฟอร์มของฉันจากนั้นผู้ใช้จะโพสต์โมเดลนั้นไปยังคอนโทรลเลอร์ ในคอนโทรลเลอร์ฉันต้องแปลงโมเดลนี้เป็นคลาสในไลบรารีทั่วไปของฉันจากนั้นส่งวัตถุนั้นไปยัง API ของฉัน จากนั้นคอนโทรลเลอร์ใน API ของฉันจะรับสายและแปลงวัตถุนั้นเป็นวัตถุเอนทิตีเพื่ออัพเดทฐานข้อมูล ดังนั้นฉันมี 3 ชั้น โมเดลสำหรับมุมมองพร้อมหมายเหตุประกอบข้อมูลทั้งหมดสำหรับการตรวจสอบความถูกต้อง …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.