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

application programming interface (API) เป็นข้อกำหนดสำหรับซอฟต์แวร์อื่นที่ใช้กับซอฟต์แวร์อื่น

30
ฉันจะสร้างภาษาการเขียนโปรแกรมของตัวเองและคอมไพเลอร์ได้อย่างไร [ปิด]
ฉันถี่ถ้วนกับการเขียนโปรแกรมและได้เจอภาษาต่างๆเช่นภาษาเบสิกภาษาฟอร์แทรนภาษาโคบอล LISP โลโก้ Java, C ++, C, MATLAB, Mathematica, Python, Ruby, Perl, JavaScript, Assembly เป็นต้น ฉันไม่เข้าใจว่าผู้คนสร้างภาษาการเขียนโปรแกรมและประดิษฐ์คอมไพเลอร์อย่างไร ฉันยังไม่เข้าใจว่าผู้คนสร้างระบบปฏิบัติการเช่น Windows, Mac, UNIX, DOS และอื่น ๆ อย่างไร สิ่งอื่น ๆ ที่ลึกลับสำหรับฉันคือวิธีที่ผู้คนสร้างห้องสมุดเช่น OpenGL, OpenCL, OpenCV, Cocoa, MFC และอื่น ๆ สิ่งสุดท้ายที่ฉันไม่สามารถเข้าใจได้ก็คือวิธีที่นักวิทยาศาสตร์คิดค้นภาษาแอสเซมบลีและแอสเซมเบลอร์สำหรับไมโครโปรเซสเซอร์ ฉันอยากจะเรียนรู้สิ่งเหล่านี้ทั้งหมดและฉันอายุ 15 ปี ฉันมักจะต้องการเป็นนักวิทยาศาสตร์คอมพิวเตอร์ที่ชอบ Babbage, Turing, Shannon หรือ Dennis Ritchie ฉันได้อ่านหนังสือการออกแบบคอมไพเลอร์ของ Aho แล้วและแนวคิดระบบปฏิบัติการของ Tanenbaum และพวกเขาทั้งหมดพูดถึงแนวคิดและรหัสในระดับสูงเท่านั้น …

12
กลยุทธ์ในการเก็บรักษาข้อมูลลับเช่นคีย์ API อยู่นอกการควบคุมของแหล่งที่มาหรือไม่
ฉันกำลังทำงานบนเว็บไซต์ที่จะอนุญาตให้ผู้ใช้เข้าสู่ระบบโดยใช้ข้อมูลประจำตัว OAuth จาก Twitter, Google และอื่น ๆ ในการทำเช่นนี้ฉันต้องลงทะเบียนกับผู้ให้บริการที่หลากหลายเหล่านี้และรับคีย์ API ลับสุดยอดที่ฉันมี เพื่อปกป้องด้วยคำมั่นสัญญาจากส่วนต่างๆของร่างกาย หากคีย์ของฉันถูก ganked ส่วนนั้นจะถูกดึง คีย์ API ต้องเดินทางไปพร้อมกับที่มาของฉันเนื่องจากมันถูกใช้ที่รันไทม์เพื่อทำการร้องขอการตรวจสอบสิทธิ์ ในกรณีของฉันคีย์ต้องมีอยู่ภายในแอปพลิเคชันในไฟล์กำหนดค่าหรือภายในโค้ดเอง นั่นไม่ใช่ปัญหาเมื่อฉันสร้างและเผยแพร่จากเครื่องเดียว อย่างไรก็ตามเมื่อเราส่งการควบคุมแหล่งที่มาลงในการผสมสิ่งต่าง ๆ ก็ซับซ้อนขึ้น ในฐานะที่ฉันเป็นไอ้เลวราคาถูกฉันก็อยากใช้บริการควบคุมแหล่งข้อมูลฟรีเช่น TFS ในคลาวด์หรือ GitHub สิ่งนี้ทำให้ฉันมีปริศนาเล็กน้อย: ฉันจะรักษาร่างกายของฉันให้เหมือนเดิมได้อย่างไรเมื่อคีย์ API ของฉันอยู่ในรหัสของฉันและรหัสของฉันจะมีอยู่ในที่เก็บสาธารณะ ฉันสามารถนึกถึงวิธีการต่าง ๆ ในการจัดการกับสิ่งนี้ แต่ไม่มีวิธีใดที่น่าพอใจ ฉันสามารถลบข้อมูลส่วนตัวทั้งหมดจากรหัสและแก้ไขกลับมาหลังจากการใช้งาน นี่จะเป็นความเจ็บปวดที่รุนแรงในการติดตั้ง (ฉันจะไม่ให้รายละเอียดหลาย ๆ วิธี) และไม่ใช่ตัวเลือก ฉันสามารถเข้ารหัสได้ แต่เมื่อฉันต้องถอดรหัสมันทุกคนที่มีแหล่งที่มาสามารถคิดวิธีการดังกล่าว ไม่มีจุดหมาย ฉันสามารถจ่ายสำหรับการควบคุมแหล่งข้อมูลส่วนตัว ฮ่า ๆ j / k ใช้เงินไหม …

14
เหตุใดแอปเดสก์ท็อปที่เขียนด้วย Qt ไม่มากขึ้น [ปิด]
เท่าที่ฉันรู้และเข้าใจในประสบการณ์ของฉันกับ Qt มันเป็นห้องสมุดที่ดีและง่ายต่อการเรียนรู้ มันมี API ที่ออกแบบมาเป็นอย่างดีและข้ามแพลตฟอร์มและนี่เป็นเพียงสองคุณสมบัติที่ทำให้มันน่าสนใจ ฉันสนใจที่จะรู้ว่าทำไมโปรแกรมเมอร์มากขึ้นจึงไม่ใช้ Qt มีข้อบกพร่องที่พูดกับมันหรือไม่? ฟีเจอร์ใดที่ทำให้ไลบรารี่อื่นดีกว่า Qt ปัญหาเกี่ยวข้องกับการออกใบอนุญาตหรือไม่
202 api  libraries  qt 

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

3
การรักษาความปลอดภัย REST API โทเค็นที่เก็บไว้กับ JWT vs OAuth
ฉันยังคงพยายามค้นหาโซลูชันความปลอดภัยที่ดีที่สุดสำหรับปกป้อง REST API เนื่องจากจำนวนแอปพลิเคชันมือถือและ API เพิ่มขึ้นทุกวัน ฉันลองใช้วิธีการพิสูจน์ตัวตนแบบต่างๆ แต่ยังมีความเข้าใจผิดอยู่บ้างดังนั้นฉันต้องการคำแนะนำจากคนที่มีประสบการณ์มากกว่า ให้ฉันบอกว่าฉันเข้าใจทุกสิ่งนี้ได้อย่างไร หากฉันเข้าใจบางสิ่งผิดพลาดโปรดแจ้งให้เราทราบ เท่าที่ REST API นั้นไร้สัญชาติเช่นเดียวกับเว็บโดยทั่วไปเราจำเป็นต้องส่งข้อมูลรับรองความถูกต้องในแต่ละคำขอ (คุกกี้โทเค็น .... ) ฉันรู้สามกลไกที่ใช้กันอย่างแพร่หลายในการตรวจสอบผู้ใช้ โทเค็นด้วย HTTPS ฉันใช้วิธีนี้หลายครั้งดีพอกับ HTTPS หากผู้ใช้ระบุรหัสผ่านที่ถูกต้องและเข้าสู่ระบบเขาจะได้รับโทเค็นตอบสนองและจะใช้สำหรับการร้องขอเพิ่มเติม โทเค็นถูกสร้างขึ้นโดยเซิร์ฟเวอร์และเก็บไว้เช่นในตารางแยกกันหรือที่เก็บข้อมูลผู้ใช้ ดังนั้นสำหรับแต่ละเซิร์ฟเวอร์คำขอจะตรวจสอบว่าผู้ใช้มีโทเค็นหรือไม่และเหมือนกับในฐานข้อมูล ทุกอย่างตรงไปตรงมาสวย โทเค็น JWT โทเค็นนี้เป็นการอธิบายตนเองประกอบด้วยข้อมูลที่จำเป็นทั้งหมดเกี่ยวกับโทเค็นผู้ใช้ไม่สามารถเปลี่ยนแปลงได้เช่นวันหมดอายุหรือการอ้างสิทธิ์อื่น ๆ เนื่องจากโทเค็นนี้สร้างขึ้น (ลงชื่อ) โดยเซิร์ฟเวอร์ที่มีคีย์เวิร์ดลับ นี่ก็ชัดเจน แต่ปัญหาใหญ่อย่างหนึ่งส่วนตัวสำหรับฉันวิธีทำให้โทเค็นเป็นโมฆะ OAuth 2. ฉันไม่เข้าใจว่าทำไมควรใช้วิธีการนี้เมื่อมีการสื่อสารโดยตรงระหว่างเซิร์ฟเวอร์กับลูกค้า เท่าที่ฉันเข้าใจเซิร์ฟเวอร์ OAuth ใช้ในการออกโทเค็นที่มีขอบเขต จำกัด เพื่ออนุญาตให้แอปพลิเคชันอื่นเข้าถึงข้อมูลผู้ใช้โดยไม่ต้องเก็บรหัสผ่านและการเข้าสู่ระบบ นี่เป็นโซลูชันที่ยอดเยี่ยมสำหรับเครือข่ายสังคมเมื่อผู้ใช้ต้องการลงทะเบียนในบางหน้าเซิร์ฟเวอร์สามารถขอสิทธิ์ในการรับข้อมูลผู้ใช้เช่นจาก twitter หรือ facebook และกรอกข้อมูลลงทะเบียนด้วยข้อมูลผู้ใช้และอื่น ๆ พิจารณาลูกค้ามือถือสำหรับร้านค้าออนไลน์ …
104 security  rest  api  oauth  https 

3
ทำไมกราฟิกเวกเตอร์ที่เร่งด้วยฮาร์ดแวร์ไม่ได้ถูกถอดออก?
ฉันกำลังทำงานกับแอพที่เกี่ยวข้องกับการจัดการเวกเตอร์พา ธ แบบเรียลไทม์ที่ 60fps และฉันประหลาดใจมากที่มีข้อมูลเพียงเล็กน้อยในเรื่องนี้ ตอนแรกผมพยายามที่จะใช้ความคิดของฉันโดยใช้ CoreGraphics แต่มันก็ไม่ได้ดำเนินการอย่างเพียงพอเพื่อฉัน จากนั้นผมก็ค้นพบว่ามีความเป็นมาตรฐาน Khronos สำหรับฮาร์ดแวร์เร่งกราฟิกแบบเวกเตอร์ที่เรียกว่าOpenVGและขอบคุณจิตวิญญาณชนิดได้เขียน OpenGL ES กึ่งการดำเนินงานที่เรียกว่าMonkVG แต่ข้อเท็จจริงที่ว่า OpenVG นั้นเป็น API ที่มีประโยชน์มาก แต่ดูเหมือนว่า Khronos จะถูกทอดทิ้งมากขึ้นหรือน้อยลง ตามวิกิพีเดียตั้งแต่ปี 2011 คณะทำงาน "ตัดสินใจที่จะ ... ไม่ต้องประชุมปกติ [sic] เพื่อให้ได้มาตรฐานมากขึ้น" เอกสารที่ดีที่สุดที่ฉันหาได้ประกอบด้วยบัตรอ้างอิงเพียงใบเดียว และยิ่งไปกว่านั้นยังมีตัวอย่างของ OpenVG แทบทุกที่บนอินเทอร์เน็ต ฉันสามารถค้นหาบทเรียนของ OpenGL หลายร้อยรายการได้ในพริบตา แต่ OpenVG ดูเหมือนจะหายไปอย่างชัดเจน คุณคิดว่าเวกเตอร์ที่เร่งด้วยฮาร์ดแวร์จะมีความสำคัญมากกว่าในโลกปัจจุบันที่มีความละเอียดเพิ่มขึ้นอย่างรวดเร็วและดูเหมือนว่าหลาย บริษัท กำลังใช้วิธีการของตนเองในการทำสิ่งนี้ ตัวอย่างเช่น Qt และ Flash มีโครงร่างสำหรับเวกเตอร์ที่เร่งด้วยฮาร์ดแวร์และเครื่องมือของ Adobe หลายตัวมีการเร่งด้วยฮาร์ดแวร์เป็นตัวเลือก …


7
การออกแบบ REST api โดย URI เทียบกับสตริงแบบสอบถาม
สมมติว่าฉันมีสามทรัพยากรที่เกี่ยวข้องดังนี้: Grandparent (collection) -> Parent (collection) -> and Child (collection) ด้านบนแสดงให้เห็นถึงความสัมพันธ์ระหว่างทรัพยากรเหล่านี้เช่น: ปู่ย่าตายายแต่ละคนสามารถแมปกับผู้ปกครองหนึ่งหรือหลายคน ผู้ปกครองแต่ละคนสามารถแมปกับเด็กคนหนึ่งหรือหลายคน ฉันต้องการความสามารถในการสนับสนุนการค้นหากับทรัพยากรลูก แต่ด้วยเกณฑ์ตัวกรอง: หากลูกค้าของฉันส่งรหัสอ้างอิงถึงปู่ย่าตายายให้ฉันฉันต้องการค้นหาเฉพาะเด็กที่เป็นทายาทสายตรงของปู่ย่าตายายนั้นเท่านั้น หากลูกค้าของฉันส่งรหัสอ้างอิงไปยังผู้ปกครองฉันต้องการค้นหาเฉพาะเด็กที่เป็นผู้สืบทอดโดยตรงจากผู้ปกครองของฉัน ฉันคิดถึงบางสิ่งเช่นนั้น: GET /myservice/api/v1/grandparents/{grandparentID}/parents/children?search={text} และ GET /myservice/api/v1/parents/{parentID}/children?search={text} สำหรับข้อกำหนดข้างต้นตามลำดับ แต่ฉันสามารถทำอะไรเช่นนี้: GET /myservice/api/v1/children?search={text}&grandparentID={id}&parentID=${id} ในการออกแบบนี้ฉันสามารถอนุญาตให้ลูกค้าของฉันส่งต่อฉันอย่างใดอย่างหนึ่งในสตริงการสืบค้น: grandparentID หรือ parentID แต่ไม่ใช่ทั้งสองอย่าง คำถามของฉันคือ: 1) การออกแบบ API ใดที่สงบมากขึ้นและทำไม ความหมายพวกมันหมายถึงและประพฤติตนในลักษณะเดียวกัน ทรัพยากรสุดท้ายใน URI คือ "children" หมายความว่าไคลเอ็นต์กำลังทำงานบนทรัพยากรชายด์อย่างมีประสิทธิภาพ 2) อะไรคือข้อดีข้อเสียของแต่ละคนในแง่ของความเข้าใจในมุมมองของลูกค้าและการบำรุงรักษาจากมุมมองของนักออกแบบ 3) สตริงการสืบค้นที่ใช้จริงๆนอกเหนือจาก "การกรอง" ในทรัพยากรของคุณคืออะไร หากคุณใช้วิธีแรกพารามิเตอร์ตัวกรองจะถูกฝังใน …
73 design  rest  api 

3
ความแตกต่างระหว่างอนาคตและสัญญาคืออะไร?
ความแตกต่างระหว่างอนาคตและสัญญาคืออะไร? (ใน Akka และ Gpars) พวกเขาดูเหมือนกันทั้งฉันบล็อกและคืนค่าในอนาคตเมื่อได้รับเรียกและสัญญาคือการได้รับผลของอนาคต
73 api  scala  groovy  akka 

8
รหัสสถานะ HTTP ใดที่จะส่งคืนหากการกระทำหลายอย่างเสร็จสิ้นด้วยสถานะที่แตกต่างกัน
ฉันกำลังสร้าง API ที่ผู้ใช้สามารถขอให้เซิร์ฟเวอร์ดำเนินการหลายอย่างในคำขอ HTTP เดียว ผลลัพธ์ถูกส่งคืนเป็นอาร์เรย์ JSON โดยมีหนึ่งรายการต่อการดำเนินการ แต่ละการกระทำเหล่านี้อาจล้มเหลวหรือประสบความสำเร็จอย่างเป็นอิสระจากกัน ตัวอย่างเช่นการกระทำแรกอาจสำเร็จการป้อนข้อมูลไปยังการดำเนินการที่สองอาจมีรูปแบบไม่ดีและไม่สามารถตรวจสอบได้และการกระทำที่สามอาจทำให้เกิดข้อผิดพลาดที่ไม่คาดคิด หากมีหนึ่งคำขอต่อการกระทำฉันจะส่งคืนรหัสสถานะ 200, 422 และ 500 ตามลำดับ แต่ตอนนี้เมื่อมีคำขอเพียงครั้งเดียวฉันควรส่งรหัสสถานะใด ตัวเลือกบางอย่าง: ส่งคืน 200 เสมอและให้ข้อมูลรายละเอียดเพิ่มเติมในร่างกาย อาจปฏิบัติตามกฎข้างต้นเฉพาะเมื่อมีมากกว่าหนึ่งการกระทำในคำขอ? อาจส่งคืน 200 หากคำขอทั้งหมดสำเร็จมิฉะนั้น 500 (หรือรหัสอื่น) เพียงใช้หนึ่งคำขอต่อการกระทำและยอมรับค่าใช้จ่ายเพิ่มเติม มีอะไรที่แตกต่างไปจากเดิมอย่างสิ้นเชิง?
72 api  http 

4
ทำไมคอลเลกชัน Java จึงถูกนำไปใช้กับ“ วิธีการเสริม” ในอินเตอร์เฟส
ในระหว่างการนำไปใช้ครั้งแรกของฉันการขยายเฟรมเวิร์กคอลเลกชัน Java ฉันค่อนข้างประหลาดใจที่เห็นว่าอินเตอร์เฟสการรวบรวมมีวิธีการประกาศเป็นทางเลือก ผู้ดำเนินการคาดว่าจะโยน UnsupportedOperationExceptions หากไม่ได้รับการสนับสนุน สิ่งนี้ทำให้ฉันกลายเป็นตัวเลือกการออกแบบ API ที่แย่ทันที หลังจากอ่านหนังสือ "Effective Java" ที่ยอดเยี่ยมของ Joshua Bloch แล้วหลังจากเรียนรู้ว่าเขาอาจต้องรับผิดชอบต่อการตัดสินใจเหล่านี้ ฉันคิดว่าการประกาศอินเทอร์เฟซสองรายการ: คอลเลกชันและ MutableCollection ซึ่งขยายคอลเลกชันด้วยวิธีการ "ทางเลือก" จะทำให้รหัสลูกค้าที่บำรุงรักษาได้มากขึ้น มีบทสรุปที่ดีของปัญหาที่เป็นที่นี่ มีเหตุผลที่ดีหรือไม่ที่เลือกวิธีเสริมแทนที่จะใช้สองอินเตอร์เฟส

3
สแลชต่อท้ายใน RESTful API
ฉันได้มีการถกเถียงกันว่าจะทำอย่างไรกับการต่อท้ายสแลชใน RESTful API ให้บอกว่าฉันมีทรัพยากรที่เรียกว่าสุนัขและทรัพยากรรองสำหรับสุนัขแต่ละตัว ดังนั้นเราสามารถทำสิ่งต่อไปนี้: GET/PUT/POST/DELETE http://example.com/dogs GET/PUT/POST/DELETE http://example.com/dogs/{id} แต่เราจะทำอย่างไรกับกรณีพิเศษต่อไปนี้: GET/PUT/POST/DELETE http://example.com/dogs/ มุมมองส่วนตัวของฉันคือว่าเรื่องนี้ไม่ว่าจะเป็นส่งคำขอไปเป็นทรัพยากรบุคคลที่มีสุนัข id null= ฉันคิดว่า API ควรส่งคืน 404 สำหรับกรณีนี้ บางคนบอกว่าคำขอกำลังเข้าถึงทรัพยากรสุนัขนั่นก็คือละเว้นการต่อท้ายสแลชจะถูกละเว้น ไม่มีใครรู้คำตอบที่ชัดเจน?
60 api  rest  http 

7
RESTFul: การดำเนินการเปลี่ยนสถานะ
ฉันกำลังวางแผนที่จะสร้าง RESTfull API แต่มีคำถามสถาปัตยกรรมที่สร้างปัญหาในหัวของฉัน การเพิ่มตรรกะธุรกิจแบ็กเอนด์ให้กับลูกค้าเป็นตัวเลือกที่ฉันต้องการหลีกเลี่ยงเนื่องจากการอัปเดตแพลตฟอร์มไคลเอนต์หลายแห่งนั้นยากที่จะรักษาในเวลาจริงเมื่อตรรกะธุรกิจสามารถเปลี่ยนแปลงได้อย่างรวดเร็ว ช่วยบอกว่าเรามีบทความเป็นทรัพยากร (api / บทความ) เราควรใช้การดำเนินการเช่นเผยแพร่, ไม่เผยแพร่, เปิดใช้งานหรือปิดการใช้งานและอื่น ๆ แต่พยายามที่จะทำให้มันง่ายที่สุด? 1) เราควรใช้ api / article / {id} / {action} เนื่องจากตรรกะส่วนแบ็คเอนด์จำนวนมากสามารถเกิดขึ้นที่นั่นได้เช่นการผลักไปยังสถานที่ห่างไกลหรือเปลี่ยนคุณสมบัติหลายอย่าง อาจเป็นสิ่งที่ยากที่สุดที่นี่คือเราจำเป็นต้องส่งข้อมูลบทความทั้งหมดกลับไปที่ API เพื่ออัปเดตและไม่สามารถใช้งานได้หลายผู้ใช้ ตัวอย่างเช่นผู้แก้ไขสามารถส่งข้อมูลที่เก่ากว่า 5 วินาทีและเขียนทับการแก้ไขที่นักข่าวคนอื่นเพิ่งทำเมื่อ 2 วินาทีที่ผ่านมาและไม่มีทางที่ฉันจะอธิบายให้ลูกค้าฟังได้เนื่องจากผู้เผยแพร่บทความไม่ได้เชื่อมต่อกับการปรับปรุงเนื้อหา 2) การสร้างทรัพยากรใหม่อาจเป็นตัวเลือก api / article- {action} / id แต่จากนั้นทรัพยากรที่ส่งคืนจะไม่เป็น article- {action} แต่บทความที่ฉันไม่แน่ใจว่าเหมาะสมหรือไม่ นอกจากนี้ในบทความคลาสโค้ดฝั่งเซิร์ฟเวอร์ก็จัดการ actuall บนทรัพยากรทั้งสองและฉันไม่แน่ใจว่าสิ่งนี้ขัดกับแนวคิด RESTfull หรือไม่ ข้อเสนอแนะใด …
59 api  rest 

8
จะใช้รหัสสถานะ HTTP 404 ใน API เมื่อใด
ฉันทำงานในโครงการและหลังจากโต้เถียงกับคนที่ทำงานเป็นเวลานานกว่าหนึ่งชั่วโมง ฉันตัดสินใจที่จะรู้ว่าคนในการแลกเปลี่ยนสแต็คอาจพูดอะไร เรากำลังเขียน API สำหรับระบบมีแบบสอบถามที่ควรส่งทรีขององค์กรหรือต้นไม้เป้าหมาย โครงสร้างขององค์กรเป็นองค์กรที่มีผู้ใช้อยู่กล่าวอีกนัยหนึ่งต้นไม้นี้ควรมีอยู่เสมอ ในองค์กรต้นไม้แห่งเป้าหมายควรมีอยู่เสมอ (นั่นคือจุดเริ่มต้นของการโต้แย้ง) ในกรณีที่ไม่มีต้นไม้เพื่อนร่วมงานของฉันตัดสินใจว่ามันจะถูกต้องที่จะตอบการตอบกลับด้วยรหัสสถานะ 200 จากนั้นก็เริ่มขอให้ฉันแก้ไขรหัสของฉันเพราะแอปพลิเคชันล้มลงเมื่อไม่มีต้นไม้ ฉันจะพยายามทำให้เปลวไฟและความโกรธเคืองน้อยลง ฉันแนะนำให้เพิ่มข้อผิดพลาด 404 เมื่อไม่มีต้นไม้ อย่างน้อยก็ให้ฉันรู้ว่ามีบางอย่างผิดปกติ เมื่อใช้ 200 ฉันต้องเพิ่มการตรวจสอบพิเศษในการตอบกลับของฉันในการติดต่อกลับสำเร็จเพื่อจัดการข้อผิดพลาด ฉันคาดหวังว่าจะได้รับวัตถุ แต่จริง ๆ แล้วฉันอาจได้รับการตอบสนองที่ว่างเปล่าเพราะไม่พบอะไรเลย มันฟังดูยุติธรรมมากที่จะทำเครื่องหมายการตอบรับเป็น 404 และจากนั้นสงครามก็เริ่มขึ้นและฉันได้รับข้อความว่าฉันไม่เข้าใจสกีมาโค้ดสถานะ HTTP ดังนั้นฉันมาที่นี่แล้วถามว่าเกิดอะไรขึ้นกับ 404 ในกรณีนี้ ฉันยังได้ข้อโต้แย้งว่า " ไม่พบอะไรเลยดังนั้นจึงถูกต้องที่จะคืน 200" ฉันเชื่อว่ามันผิดเพราะต้นไม้ควรมีอยู่เสมอ หากเราไม่พบอะไรและเราคาดหวังบางสิ่งมันควรจะเป็น 404 ข้อมูลเพิ่มเติม, ฉันลืมที่จะเพิ่ม URL ที่ดึงมา องค์กร /OrgTree/Get เป้าหมาย /GoalTree/GetByDate?versionDate=... /GoalTree/GetById?versionId=... ความผิดพลาดของฉันจำเป็นต้องใช้ทั้งพารามิเตอร์ หาก versionDate ใด …

4
มีกรณีพิเศษที่เราสามารถรับรหัสซ้ำได้หรือไม่
ฉันกำลังทำงานในโครงการซอฟต์แวร์ที่เราต้องสร้าง API สามตัว หนึ่งสำหรับบ้านธนาคารช่องทางหนึ่งสำหรับหน่วยงานและช่องทางที่สามสำหรับโทรศัพท์มือถือช่อง API ของเอเจนซีนั้นสมบูรณ์ที่สุดเนื่องจากมีฟังก์ชั่นทั้งหมด .. จากนั้นเป็น Home API ที่เล็กกว่าและ API มือถือ สถาปนิกที่นี่สร้างเลเยอร์ทั่วไป (บริการ EJB ข้ามแชนเนลที่แชร์โดย API ทั้งหมด) แต่ API นั้นแตกต่างกัน ตอนนี้ไม่มีความแตกต่างใหญ่ระหว่าง API ทีมใหญ่เริ่มต้นด้วยแชแนลเอเจนซี่และเรากำลังปรับให้เข้ากับช่องทางบ้าน เราเป็นเพียงการเพิ่มคุณค่าของวัตถุให้กับแอพหลักของเรา มิฉะนั้นรหัสจะคล้ายกัน 95% ระหว่าง API API นั้นสร้างมาจากSpring MVCและมี (ตัวควบคุมรุ่นและยูทิลิตี้บางอย่าง) โดยพื้นฐานแล้วคอนโทรลเลอร์กำลังทำการแมป BO กับ ChannelObject (ดูเหมือนว่าฉันไม่ใช่สถานที่ที่เหมาะสมในการทำเช่นนั้น) และยูทิลิตี้และซีเรียลไลเซอร์บางส่วน ทั้งหมดซ้ำกันในตอนนี้ พวกเขาบอกว่าสาเหตุของการทำซ้ำคือพวกเขาต้องการให้ API แยกต่างหาก "ถ้าพรุ่งนี้เราต้องการพฤติกรรมที่แตกต่างสำหรับบ้านมากกว่าเอเจนซี่หรือมือถือเราจะไม่ดิ้นรน !!" มีกรณีที่เราควรยอมรับรหัสซ้ำหรือไม่
57 java  api  spring 

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