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

21
รหัสตอบกลับ REST ที่เหมาะสมสำหรับคำขอที่ถูกต้อง แต่เป็นข้อมูลว่างเปล่าคืออะไร
ตัวอย่างเช่นคุณเรียกใช้คำขอ GET users/9แต่ไม่มีผู้ใช้ที่มี ID # 9 รหัสตอบกลับที่ดีที่สุดคืออะไร 200 ตกลง 202 ได้รับการยอมรับ 204 ไม่มีเนื้อหา 400 คำขอไม่ถูกต้อง ไม่พบ 404
332 rest  http  api-design 

7
อะไรคือแนวปฏิบัติที่ดีที่สุดสำหรับทรัพยากรที่ซ้อนกัน REST
เท่าที่ฉันสามารถบอกได้ว่าทรัพยากรแต่ละรายการควรมีเพียงเส้นทางเดียวเท่านั้น ดังนั้นในตัวอย่างต่อไปนี้รูปแบบ URL ที่ดีจะเป็นอย่างไร ยกตัวอย่างการเป็นตัวแทน บริษัท ที่เหลือ ในตัวอย่างสมมุตินี้แต่ละ บริษัทเป็นเจ้าของ 0 หรือมากกว่าแผนกและแต่ละแผนกเป็นเจ้าของ 0 หรือมากกว่าพนักงาน แผนกไม่สามารถอยู่ได้หากไม่มี บริษัท ที่เกี่ยวข้อง พนักงานไม่สามารถอยู่ได้หากไม่มีแผนกที่เกี่ยวข้อง ทีนี้ฉันก็พบว่ารูปแบบของทรัพยากรนั้นเป็นตัวแทนของธรรมชาติ /companies ชุดของ บริษัท - ยอมรับการจัดตั้ง บริษัท ใหม่ รับทั้งชุด /companies/{companyId}บริษัท เอกชน ยอมรับ GET, PUT และ DELETE /companies/{companyId}/departmentsยอมรับ POST สำหรับรายการใหม่ (สร้างแผนกภายใน บริษัท ) /companies/{companyId}/departments/{departmentId}/ /companies/{companyId}/departments/{departmentId}/employees /companies/{companyId}/departments/{departmentId}/employees/{empId} ด้วยข้อ จำกัด ในแต่ละส่วนฉันรู้สึกว่ามันสมเหตุสมผลถ้าซ้อนกันลึกลงไปเล็กน้อย อย่างไรก็ตามความยากลำบากของฉันเกิดขึ้นถ้าฉันต้องการแสดงรายการ ( GET) พนักงานทุกคนในทุก บริษัท …
301 rest  api-design 

11
การแบ่งหน้า API ที่ดีที่สุด
ฉันชอบความช่วยเหลือในการจัดการเคสขอบแปลก ๆ ด้วย API ที่ฉันสร้างขึ้น เช่นเดียวกับ API จำนวนมากอันนี้แบ่งหน้าผลลัพธ์ขนาดใหญ่ หากคุณสอบถาม / foos คุณจะได้รับ 100 ผลลัพธ์ (เช่น foo # 1-100) และลิงก์ไปยัง / foos? page = 2 ซึ่งควรส่งคืน foo # 101-200 น่าเสียดายที่หาก foo # 10 ถูกลบออกจากชุดข้อมูลก่อนที่ผู้บริโภค API จะทำการสืบค้นต่อไป / foos? page = 2 จะชดเชย 100 และส่งกลับ foos # 102-201 ปัญหานี้เป็นปัญหาสำหรับผู้ใช้ API ที่พยายามดึง foos …

5
เหตุใด Java Streams จึงปิดทันที
ซึ่งแตกต่างจาก C # IEnumerableที่ไพพ์ไลน์การประมวลผลสามารถดำเนินการได้หลายครั้งตามที่เราต้องการใน Java สตรีมสามารถ 'ซ้ำ' เพียงครั้งเดียว การเรียกใช้งานเทอร์มินัลใด ๆ จะปิดสตรีมทำให้ไม่สามารถใช้งานได้ 'คุณสมบัติ' นี้ใช้พลังงานจำนวนมาก ฉันคิดว่าเหตุผลนี้ไม่ใช่เทคนิค สิ่งที่ต้องพิจารณาในการออกแบบภายใต้ข้อ จำกัด ที่แปลกประหลาดนี้คืออะไร? แก้ไข: เพื่อแสดงสิ่งที่ฉันกำลังพูดถึงให้พิจารณาการนำไปใช้งาน Quick-Sort ใน C #: IEnumerable<int> QuickSort(IEnumerable<int> ints) { if (!ints.Any()) { return Enumerable.Empty<int>(); } int pivot = ints.First(); IEnumerable<int> lt = ints.Where(i => i < pivot); IEnumerable<int> gt = ints.Where(i => …

8
เรียกใช้วิธีฝั่งเซิร์ฟเวอร์บนทรัพยากรในวิธีที่สงบ
โปรดทราบว่าฉันมีความเข้าใจพื้นฐานเกี่ยวกับส่วนที่เหลือ สมมติว่าฉันมี URL นี้: http://api.animals.com/v1/dogs/1/ และตอนนี้ฉันต้องการให้เซิร์ฟเวอร์สร้างสุนัขเห่า เฉพาะเซิร์ฟเวอร์เท่านั้นที่รู้วิธีการทำเช่นนี้ สมมติว่าฉันต้องการให้มันทำงานในงาน CRON ที่ทำให้สุนัขเห่าทุก ๆ 10 นาทีตลอดชั่วนิรันดร์ การโทรนั้นมีลักษณะอย่างไร ฉันต้องการทำสิ่งนี้: คำขอ URL: ACTION http://api.animals.com/v1/dogs/1/ ในเนื้อหาคำขอ: {"action":"bark"} ก่อนที่คุณจะโกรธฉันที่ทำวิธี HTTP ของฉันเองช่วยฉันออกมาและให้แนวคิดที่ดีกว่าเกี่ยวกับวิธีที่ฉันควรเรียกใช้วิธีฝั่งเซิร์ฟเวอร์แบบ RESTful :) แก้ไขเพื่อความชัดเจน ชี้แจงเพิ่มเติมเกี่ยวกับสิ่งที่ "เปลือกไม้" วิธีการ นี่คือตัวเลือกบางอย่างที่อาจทำให้การเรียก API ที่มีโครงสร้างแตกต่างกัน: เรือสำเภาเพียงส่งอีเมลไปที่ dog.email และบันทึกสิ่งใด bark ส่งอีเมลไปที่ dog.email และการเพิ่มขึ้น dog.barkCount 1 bark สร้างเร็กคอร์ด "bark" ใหม่ที่มีการบันทึก bark.timestamp เมื่อ bark เกิดขึ้น …

7
เมื่อใดที่ฉันใช้พา ธ พารามิเตอร์เทียบกับพารามิเตอร์คิวรีใน RESTful API
ฉันต้องการให้ RESTful API ของฉันสามารถคาดเดาได้มาก แนวทางปฏิบัติที่ดีที่สุดในการตัดสินใจว่าเมื่อใดควรแบ่งกลุ่มข้อมูลโดยใช้ URI แทนที่จะใช้พารามิเตอร์แบบสอบถาม มันสมเหตุสมผลแล้วสำหรับฉันที่พารามิเตอร์ระบบที่รองรับการแบ่งหน้าการเรียงลำดับและการจัดกลุ่มอยู่หลังเครื่องหมาย '?' แต่ช่องต่างๆเช่น "สถานะ" และ "ภูมิภาค" หรือแอตทริบิวต์อื่น ๆ ที่แบ่งกลุ่มคอลเล็กชันของคุณล่ะ ถ้าสิ่งเหล่านี้จะต้องเป็นพารามิเตอร์การสืบค้นด้วยเช่นกันกฎง่ายๆในการรู้ว่าเมื่อใดควรใช้พา ธ พารามิเตอร์?

4
ทำไม String.valueOf (null) จึงโยน NullPointerException
ตามเอกสารวิธีการString.valueOf(Object obj)คืนค่า: ถ้าอาร์กิวเมนต์เป็นnullสตริงเท่ากับ"null"; มิฉะนั้นมูลค่าของobj.toString()จะถูกส่งกลับ แต่เมื่อฉันพยายามทำสิ่งนี้: System.out.println("String.valueOf(null) = " + String.valueOf(null)); มันพ่น NPE แทน? (ลองเองถ้าไม่เชื่อ!) ข้อยกเว้นในเธรด "main" java.lang.NullPointerException ที่ java.lang.String. (ไม่ทราบแหล่งที่มา) ที่ java.lang.String.valueOf (ไม่ทราบแหล่งที่มา) มันเกิดขึ้นได้อย่างไร? เอกสารโกหกฉันหรือเปล่า นี่เป็นข้อผิดพลาดที่สำคัญใน Java หรือไม่?

3
เหตุใด int num = Integer.getInteger (“ 123”) จึงโยน NullPointerException
รหัสต่อไปนี้พ่นNullPointerException: int num = Integer.getInteger("123"); คอมไพเลอร์ของฉันเรียกใช้getIntegernull เนื่องจากเป็นแบบคงที่หรือไม่ นั่นไม่สมเหตุสมผลเลย! เกิดอะไรขึ้น?

28
GB English หรือ US English?
หากคุณมี API และคุณเป็นนักพัฒนาในสหราชอาณาจักรที่มีผู้ชมจากต่างประเทศสูง API ของคุณควรเป็น setColour() หรือ setColor() (เพื่อใช้คำหนึ่งคำเป็นตัวอย่างง่ายๆ) วิศวกรที่อยู่ในสหราชอาณาจักรมักจะค่อนข้างป้องกันเกี่ยวกับการสะกดคำที่ 'ถูกต้อง' แต่อาจเป็นที่ถกเถียงกันอยู่ว่าการสะกดของสหรัฐฯเป็น 'มาตรฐาน' มากกว่าในตลาดต่างประเทศ ฉันเดาว่าคำถามมันสำคัญหรือไม่? นักพัฒนาซอฟต์แวร์ในภาษาอื่น ๆ ต่อสู้กับการสะกด GB หรือโดยปกติมันค่อนข้างชัดเจนว่าสิ่งต่างๆหมายถึงอะไร ทุกอย่างควรเป็นภาษาอังกฤษแบบสหรัฐอเมริกาหรือไม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.