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

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

9
คุณควรป้องกันค่าที่ไม่คาดคิดจาก API ภายนอกหรือไม่
ช่วยบอกว่าคุณมีการเข้ารหัสฟังก์ชั่นที่ต้องใช้ข้อมูลจาก MyAPIAPI ที่ภายนอก ที่ภายนอก API MyAPIมีสัญญาที่ระบุว่ามันจะกลับมาได้หรือstringnumber มันคือการแนะนำเพื่อป้องกันสิ่งที่ชอบnull, undefined, booleanฯลฯ แม้ว่ามันจะไม่ได้เป็นส่วนหนึ่งของ API ของMyAPI? โดยเฉพาะอย่างยิ่งเนื่องจากคุณไม่สามารถควบคุม API นั้นคุณไม่สามารถรับประกันผ่านการวิเคราะห์ประเภทแบบคงที่ดังนั้นจะปลอดภัยกว่าขออภัยหรือไม่ ฉันกำลังคิดเกี่ยวกับหลักการความแข็งแกร่ง

10
รหัสสถานะ http สำหรับข้อผิดพลาด“ บริการไม่พร้อมให้บริการในพื้นที่ของคุณ” ควรเป็นอย่างไร
บริการของเราอยู่ใน 5 เมืองในขณะนี้ หากมีคนพยายามโทรหา API บริการของเราจากเมืองอื่นเราต้องการส่งข้อผิดพลาดService not available in your areaนี้ คำถามคือรหัส http ที่เหมาะสมสำหรับข้อผิดพลาดนี้คืออะไร? 503: บริการไม่พร้อมใช้งาน 403: ถูกห้าม หรืออย่างอื่น?
51 api  api-design  http 

3
อะไรคือสิ่งสำคัญในปัจจุบันของสบู่
ครั้งล่าสุดที่ฉันพบบริการที่ใช้ SOAP คือในระหว่างการฝึกงานใน บริษัท การเงินในปี 2556 นั่นคือช่วงเวลาที่ฉันเริ่มต้นทำงานด้านไอที ฉันจำได้ว่ามีสื่อการเรียนรู้เกี่ยวกับสบู่ในหลักสูตรวิศวกรรมศาสตร์ของฉัน นอกเหนือจากนั้นฉันไม่ได้ใช้ SOAP มากในช่วงอาชีพของฉัน ฉันถามคำถามนี้เพราะคำถามที่ว่า "ความแตกต่างระหว่าง SOAP และ REST" มาจากการสัมภาษณ์ครั้งล่าสุดของฉัน จากสิ่งที่ฉันรู้ (และสิ่งที่ฉันพบใน Google) SOAP เป็นโปรโตคอลที่มีการเชื่อมต่ออย่างแน่นหนาระหว่างไคลเอนต์และเซิร์ฟเวอร์สำหรับการแลกเปลี่ยนข้อมูลที่เกี่ยวข้องอย่างใกล้ชิดกับตรรกะทางธุรกิจ ในขณะที่ REST เป็นสถาปัตยกรรมไร้สัญชาติที่ยืดหยุ่นกว่าสำหรับการถ่ายโอนข้อมูล ใครสามารถโปรดแก้ไขให้ฉันถ้าฉันผิดเกี่ยวกับความแตกต่างระหว่าง SOAP และ REST นี้ นอกจากนี้ความสำคัญของสบู่ในปัจจุบันคืออะไร? ผู้คนยังคงพัฒนา API ที่ใช้ SOAP ใหม่หรือไม่
51 rest  api  web-services  soap 

3
วิธีที่เหมาะสมในการทำวิธีการค้นหาแบบ RESTful ที่ซับซ้อนคืออะไร
ตามหลักการ REST ฉันต้องการสร้างวิธีการ GET สำหรับ API ของฉันที่ทำการค้นหาโดยใช้เกณฑ์บางอย่างและส่งคืนผลลัพธ์ให้กับลูกค้า ปัญหาคือเกณฑ์สามารถมีพารามิเตอร์ได้มากถึง 14 พารามิเตอร์โดยหนึ่งในนั้นคือรายการของวัตถุที่ซับซ้อนดังนั้น ... ฉันไม่รู้ด้วยซ้ำว่าเป็นไปได้ในการเข้ารหัส / ถอดรหัสวัตถุที่ซับซ้อนเหล่านี้ไปยัง / จากพารามิเตอร์ url ฉันไม่ได้คำนวณระยะเวลาที่ URL จะได้รับ แต่ฉันแน่ใจว่ามันจะมีขนาดใหญ่พอและอาจถึงขีด จำกัด ของ URL ได้หรือไม่ นอกจากนี้การค้นหาควรแสดงผลลัพธ์ใน "เรียลไทม์" ฉันหมายความว่าทุกครั้งที่ผู้ใช้เปลี่ยนบางสิ่งจากแบบฟอร์มการค้นหาเขาควรจะเห็นผลลัพธ์ใหม่โดยไม่ต้องกดปุ่ม "ค้นหา" ใด ๆ คุณช่วยอธิบายประเด็นเหล่านี้ให้ฉันหน่อยได้มั้ยและอะไรคือคำแนะนำของคุณในการสร้างวิธีการค้นหาแบบพักผ่อนด้วยพารามิเตอร์จำนวนมาก?
44 rest  api 

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

3
จริง ๆ แล้วมันคุ้มค่ากับการทดสอบหน่วยลูกค้า API หรือไม่
นี่เป็นสิ่งที่ทำให้ฉันหนักใจอยู่พักหนึ่งแล้ว จริง ๆ แล้วมันคุ้มค่ากับการทดสอบหน่วยลูกค้า API หรือไม่ สมมติว่าคุณกำลังสร้างชั้นเรียนขนาดเล็กเพื่อสรุปการโทรหาสัตว์เลี้ยง REST API Petshop เป็น API ที่ง่ายมากและมีชุดวิธีพื้นฐาน: listProducts() getProductDetails(ProductID) addProduct(...) removeProduct(ProductID) ในการทดสอบสิ่งนี้เราต้องสร้างบริการจำลองหรือตอบกลับ แต่นั่นดูเหมือน overkill; ฉันเข้าใจว่าเราต้องการตรวจสอบให้แน่ใจว่าวิธีการของเราไม่หยุดทำงานผ่านข้อผิดพลาดของ typo / syntax แต่เนื่องจากเรากำลังเขียนฟังก์ชั่นที่เรียกใช้วิธีการทางไกลแล้วเรากำลังสร้างการตอบกลับปลอมจากวิธีการทางไกลเหล่านั้น เป็นการเสียความพยายามและเรากำลังทดสอบบางสิ่งที่ไม่สามารถล้มเหลวได้จริงๆ ที่แย่กว่านั้นหากวิธีการระยะไกลเปลี่ยนการทดสอบหน่วยของเราจะผ่านในขณะที่การใช้การผลิตล้มเหลว ฉันค่อนข้างมั่นใจว่าฉันพลาดอะไรบางอย่างไปหรือฉันมีไม้ผิดหรือฉันไม่ได้เห็นต้นไม้สำหรับต้นไม้ มีคนตั้งฉันให้ถูกทางได้ไหม?
38 unit-testing  api 

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

5
การกำหนดว่าวิธีใดสามารถแทนที่ข้อผูกพันที่แข็งแกร่งกว่าการกำหนดวิธีการที่สามารถเรียกได้
จาก: http://www.artima.com/lejava/articles/designprinciples4.html Erich Gamma: ฉันยังคงคิดว่ามันเป็นความจริงแม้หลังจากผ่านไปสิบปี การสืบทอดเป็นวิธีที่ยอดเยี่ยมในการเปลี่ยนพฤติกรรม แต่เรารู้ว่ามันเปราะบางเนื่องจากคลาสย่อยสามารถตั้งสมมติฐานเกี่ยวกับบริบทที่มีการเรียกเมธอดแทนที่ได้ง่าย มีการเชื่อมต่ออย่างแน่นหนาระหว่างคลาสฐานและคลาสย่อยเนื่องจากบริบทโดยปริยายซึ่งโค้ดคลาสย่อยที่ฉันเสียบเข้าจะถูกเรียก องค์ประกอบมีคุณสมบัติที่ดีกว่า การมีเพศสัมพันธ์จะลดลงเพียงแค่มีสิ่งเล็ก ๆ ที่คุณเสียบเข้าไปกับสิ่งที่ใหญ่กว่าและวัตถุที่ใหญ่กว่าก็เรียกวัตถุที่เล็กกว่ากลับมา จากมุมมองของ API ที่กำหนดว่าวิธีการใด ๆ ที่สามารถแทนที่ได้คือความมุ่งมั่นที่แข็งแกร่งกว่าการกำหนดวิธีการที่สามารถเรียกได้ ฉันไม่เข้าใจสิ่งที่เขาหมายถึง ใครช่วยอธิบายหน่อยได้ไหม

8
ฉันจะเขียนชุดฟังก์ชั่นที่สามารถเรียกใช้จาก (เกือบ) ภาษาการเขียนโปรแกรมได้อย่างไร?
ฉันต้องการหาวิธีเขียน API ที่สามารถเข้าถึงได้จากภาษาโปรแกรมอื่น ๆ ผ่านการเชื่อมโยงภาษา (หรือกรอบงานอื่น ๆ ) เป็นไปได้ที่จะทำเช่นนี้? ถ้าใช่ภาษาการเขียนโปรแกรมใดจะเหมาะที่สุดสำหรับการเขียน "ข้ามภาษา" API เป้าหมายของฉันคือการสร้างฟังก์ชั่นชุดเดียวที่ฉันสามารถเข้าถึงได้จากภาษาการเขียนโปรแกรมใด ๆ ที่ฉันทำงานด้วยเพื่อที่ฉันจะได้ไม่ต้องเขียน API ใหม่ทั้งหมดในแต่ละภาษาด้วยตนเอง
33 api  languages  binding 

3
วิธีการแสดง (enum) ประเภทใน API สาธารณะ
ฉันกำลังทำงานกับ API อย่างง่ายที่ฉันต้องการใช้สำหรับลูกค้าของตัวเองและเพื่อเปิดให้ประชาชนในอนาคต ฉันมีวัตถุ "รายการ" ซึ่งสามารถมี "ประเภท" ที่แตกต่างกัน ประเภทคือ C "typedef enum" ในขณะที่ฉันมี: typedef enum { ItemTypeBool, ItemTypeNumber, ItemTypeDate, } ItemType; (ฉันอาจเพิ่มบางอย่างในอนาคต) ฉันสงสัยว่าฉันควรจะถ่ายโอนมันเป็นจำนวนเต็มหรือตามที่กำหนดไว้ "สตริง" JSON จะเป็น: สำหรับจำนวนเต็ม: { "name": "The name", "type": 0, ... } สำหรับสตริง: { "name": "The name" "type": "boolean" ... } ฉันสงสัยว่ามีวิธีปฏิบัติที่ดีที่สุดสำหรับสิ่งนี้หรือไม่ การรักษาจำนวนเต็มจะลดความซับซ้อนของรหัสเล็กน้อยและลดแบนด์วิดธ์ แต่สตริงจะง่ายขึ้นสำหรับนักพัฒนาที่จะจำ ฉันจำได้ว่าฉันทำงานในโครงการและฉันต้องจำ 1 = …

2
เว็บไซต์ควรใช้ API สาธารณะหรือไม่
ฉันเริ่มเขียน webservice และฉันสร้างด้วย nodeJS และ RESTfulish จากสิ่งที่ฉันรวบรวม: ข้อดีคือคุณไม่ต้องทำซ้ำรหัส ข้อเสียคือคุณ: จะอัปเดต API สาธารณะเป็นประจำ แต่ควรแก้ไขด้วยการกำหนดเวอร์ชัน ไม่สามารถทำการแคชเฉพาะบริการและเพิ่มประสิทธิภาพได้จริงๆ การปฏิบัติที่ดีที่สุดคืออะไร? เว็บไซต์เช่น Stack Exchange, Github, Twitter และอื่น ๆ ใช้ API ของตัวเองสำหรับลูกค้าของพวกเขาหรือไม่?
31 api 

9
การตั้งชื่ออินเทอร์เฟซ: คำนำหน้า 'Can-' เทียบกับคำต่อท้าย 'สามารถ'
เป็นเรื่องปกติที่จะใช้ '-able' เป็นคำต่อท้ายสำหรับอินเทอร์เฟซเช่น สามารถยิงได้แบบหมุนได้ ฉันคิดว่า 'Can-' อาจจะดีกว่าเพราะอาจเป็นคำอธิบายที่มากกว่า ใช่มันเป็นถ้อยคำมากขึ้นและเพิ่มเสียงให้กับชื่ออินเตอร์เฟส โดยเฉพาะอย่างยิ่งคำกริยาแฝงสามารถนำมาใช้ เช่น 1หมายถึง Shootable หมายความว่าวัตถุสามารถยิงได้ (ปืนอาจใช้สิ่งนี้) หรือหมายความว่าสามารถยิงได้ (บอร์ดเป้าหมายอาจใช้สิ่งนี้) ด้วยคำนำหน้า 'Can-' อดีตจะเป็น "CanShoot" และส่วนหลังจะเป็น "CanBeShotAt" หรือ "CanShootAt" เช่น 2เอกสาร 'CanBePrinted' และเครื่องพิมพ์ 'CanPrint' หรือเราควรใช้ '-Able' และให้เอกสารอธิบายบริบทหรือไม่ ความคิดเห็นใด ๆ
29 api  interfaces 

2
ทำไมการประชุมบอกว่าชื่อตาราง DB ควรเป็นเอกเทศ แต่เป็นพหูพจน์ของทรัพยากร
มันเป็นแบบแผนที่ค่อนข้างกำหนดไว้ว่าอย่างน้อยชื่อตารางฐานข้อมูลใน SQL ควรเป็นแบบเอกพจน์ SELECT * FROM user;ดูคำถามและการอภิปรายนี้ นอกจากนี้ยังมีการประชุมที่ค่อนข้างดีที่ชื่อทรัพยากร RESTful API ควรเป็นพหูพจน์ GET /users/123และPOST /usersดูคนนี้ ใน API ที่ได้รับการสนับสนุนฐานข้อมูลที่ง่ายที่สุดชื่อของทรัพยากรใน URL จะเป็นตารางและองค์ประกอบข้อมูลใน URL และหน่วยงานร้องขอ / ตอบสนองจะจับคู่กับคอลัมน์ในฐานข้อมูลโดยตรง ตามแนวคิดแล้วฉันไม่เห็นความแตกต่างระหว่างการทำงานกับข้อมูลผ่าน API เชิงทฤษฎีนี้กับการทำงานบน SQL โดยตรง และด้วยเหตุนี้ความแตกต่างในการตั้งชื่อข้อตกลงระหว่างuserและusersไม่สมเหตุสมผลกับฉัน ความแตกต่างในการทำให้เป็นพหูพจน์เป็นอย่างไรเมื่อแนวคิด REST API และ SQL กำลังทำสิ่งเดียวกัน

4
เทคนิคการพิสูจน์ตัวตนของ Web api
เรามีเฟรมเวิร์กบริการเว็บ asp.net MVC สำหรับการให้บริการ xml / json สำหรับผู้คนรับคำขอ แต่กำลังพยายามหาวิธีที่ดีที่สุด (รวดเร็วง่ายและไม่สำคัญสำหรับผู้ใช้ที่เข้ารหัสด้วยจาวาสคริปต์หรือภาษา OO) เพื่อรับรองความถูกต้องของผู้ใช้ ไม่ใช่ว่าข้อมูลของเรามีความละเอียดอ่อนหรืออะไรเราเพียงต้องการให้ผู้ใช้ลงทะเบียนเพื่อให้เราสามารถมีที่อยู่อีเมลของพวกเขาเพื่อแจ้งให้ทราบถึงการเปลี่ยนแปลงและติดตามการใช้งาน ในความพยายามครั้งก่อนของเราเรามีชื่อผู้ใช้ใน URI และจะทำให้แน่ใจว่าชื่อผู้ใช้นั้นมีอยู่และเพิ่มตารางฐานข้อมูลด้วยการใช้งาน นี่เป็นขั้นพื้นฐานสุด ๆ แต่เราจะสังเกตเห็นคนที่ใช้การสาธิตเป็นชื่อผู้ใช้ ฯลฯ ดังนั้นเราจึงต้องการให้มันซับซ้อนขึ้นเล็กน้อย มีเทคนิคการรับรองความถูกต้องอะไรบ้าง สิ่งที่ผู้เล่นสำคัญใช้ / ทำ
26 security  api  web  services  rest 

1
Rest APIs - ความท้าทายเฉพาะสำหรับมือถือ
ฉันกำลังทำงานในโครงการแอพ iOS ใหม่ทางมือถือ การเปลี่ยนแปลงสถาปัตยกรรมบางอย่างกำลังเกิดขึ้นและปรากฎว่าเราจะต้องพึ่งพา API ส่วนตัวที่สร้างขึ้นเองซึ่งจะถูกใช้โดยแอพที่เรากำลังสร้างและลูกค้ารายอื่นเช่นเว็บไซต์ API ที่ถูกออกแบบตามสไตล์ Rest ของการดำเนินการ URI และ CRUD ที่เน้นทรัพยากรเป็นศูนย์กลางจับคู่กับกริยา HTTP สิ่งที่ชอบ: GET www.example.com/books DELETE www.example.com/books/482094 POST www.example.com/users/6793 ปัญหาคือว่ารูปแบบนี้มักจะนำไปสู่ความต้องการให้ไคลเอนต์มือถือทำการร้องขอมากมายสำหรับการโหลดหน้าจอแอปเดียวหรือจัดการการกระทำ UI ของผู้ใช้คนเดียว สิ่งนี้นำไปสู่แอปที่อยู่ในโหมดโหลดเป็นเวลา 8 วินาทีจนกว่าจะมีทุกอย่างที่จำเป็น แอพที่ช้าและไม่ตอบสนอง ไคลเอนต์มือถือมีข้อ จำกัด ที่ร้ายแรงเมื่อพูดถึงการเชื่อมต่อดังนั้นเราควรปฏิบัติตามกฎดังกล่าว: 1 หน้าจอ == 1 การเรียก API 1 บันทึก == 1 การเรียก API มีหลายสถานการณ์ที่สิ่งนี้ทำให้คุณมีหลักสูตรการชนด้วยหลักการออกแบบ REST เช่น: สมมติว่าแอปของคุณออฟไลน์อยู่หนึ่งวันและคุณจำเป็นต้องซิงค์กับฐานข้อมูลแบ็กเอนด์สี่ตารางและคุณต้องการโทรศัพท์เช่น www.example.com/sync_everything?since=2015-07-24 สมมติว่ามีหน้าจอที่ผู้ใช้สามารถแก้ไขวัตถุของเขาได้หลายอย่างเช่นการทำเครื่องหมายในรายการสิ่งที่ต้องทำ …
25 rest  api  ios  mobile 

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