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

บริการบนเว็บเป็นระบบซอฟต์แวร์ที่ออกแบบมาเพื่อรองรับการทำงานร่วมกันระหว่างเครื่องกับเครื่องผ่านเครือข่าย


3
ควรใช้คุกกี้ใน RESTful API หรือไม่
ฉันสนใจเป็นพิเศษในการที่ผู้ใช้ทำการดำเนินงานที่ได้รับอนุญาต / รับรองความถูกต้องบนเว็บ API คุกกี้การรับรองความถูกต้องเข้ากันได้กับปรัชญา REST และทำไม

7
การสร้างเลเยอร์บริการมีความสำคัญอย่างไร
ฉันเริ่มสร้างแอพใน 3 เลเยอร์ (DAL, BL, UI) [ส่วนใหญ่จัดการกับ CRM, รายงานการขายและสินค้าคงคลัง] เพื่อนร่วมงานคนหนึ่งบอกฉันว่าฉันต้องย้ายไปที่รูปแบบเลเยอร์บริการซึ่งนักพัฒนาซอฟต์แวร์มาจากรูปแบบการบริการจากประสบการณ์ของพวกเขาและเป็นวิธีที่ดีกว่าในการออกแบบแอปพลิเคชันส่วนใหญ่ เขากล่าวว่าจะง่ายกว่ามากในการรักษาแอพพลิเคชั่นในอนาคต โดยส่วนตัวแล้วฉันได้รับความรู้สึกว่ามันเป็นเพียงการสร้างสิ่งที่ซับซ้อนมากขึ้นและฉันก็ไม่สามารถเห็นผลประโยชน์มากมายจากสิ่งนี้ที่จะพิสูจน์ได้ แอพนี้มี UI ขนาดเล็กเพิ่มเติมที่ใช้ฟังก์ชั่นแอปพลิเคชั่นเดสก์ท็อปบางส่วน (แต่มีเพียงไม่กี่) ดังนั้นฉันจึงพบว่าตัวเองทำซ้ำรหัสบางส่วน (แต่ไม่มาก) เพียงเพราะการทำซ้ำรหัสบางอย่างฉันจะไม่แปลงเป็นบริการที่มุ่งเน้น แต่เขาบอกว่าฉันควรใช้ต่อไปเพราะโดยทั่วไปแล้วมันเป็นสถาปัตยกรรมที่ดีมากทำไมโปรแกรมเมอร์จึงหลงใหลในบริการ ฉันพยายาม google บนมัน แต่ฉันยังคงสับสนและไม่สามารถตัดสินใจได้ว่าจะทำอย่างไร

5
เหตุใดจึงไม่ดีในการอ่านข้อมูลจากฐานข้อมูล“ เป็นเจ้าของ” โดย microservice ที่แตกต่างกัน
ฉันเพิ่งอ่านบทความที่ยอดเยี่ยมนี้ในสถาปัตยกรรม microservice: http://www.infoq.com/articles/microservices-intro มันระบุว่าเมื่อคุณโหลดหน้าเว็บใน Amazon แล้วไมโครไซต์กว่า 100 รายการจะร่วมมือเพื่อให้บริการหน้านั้น บทความนั้นอธิบายว่าการสื่อสารระหว่างไมโครไซต์ทั้งหมดสามารถทำได้ผ่าน API เท่านั้น คำถามของฉันคือเหตุผลที่ไม่ดีที่จะบอกว่าการเขียนฐานข้อมูลทั้งหมดสามารถทำได้ผ่าน API เท่านั้น แต่คุณสามารถอ่านได้โดยตรงจากฐานข้อมูลของบริการไมโครต่างๆ ตัวอย่างเช่นสามารถพูดได้ว่ามีเพียงไม่กี่มุมมองฐานข้อมูลที่สามารถเข้าถึงได้นอกบริการไมโครเพื่อให้ทีมที่ดูแลบริการไมโครรู้ว่าตราบใดที่พวกเขารักษามุมมองเหล่านี้เหมือนเดิมแล้วพวกเขาสามารถเปลี่ยนโครงสร้างฐานข้อมูลของบริการไมโคร ต้องการ. ฉันทำอะไรบางอย่างหายไปหรือเปล่า มีเหตุผลอื่นอีกไหมทำไมข้อมูลควรอ่านผ่าน API เท่านั้น? บริษัท ของฉันเล็กกว่า Amazon อย่างมาก (และจะเป็นเสมอ) และจำนวนผู้ใช้สูงสุดที่เราสามารถมีได้ประมาณ 5 ล้านคน

10
เมื่อใดที่คุณจะใช้ ID สตริงยาวแทนที่จะเป็นจำนวนเต็มอย่างง่าย [ปิด]
ฉันต้องการที่จะใช้ Youtube เป็นตัวอย่าง: PEckzwggd78พวกเขาใช้รหัสในรูปแบบของ ทำไมพวกเขาถึงไม่ใช้จำนวนเต็มอย่างง่าย? หรือ imgur.com - พวกเขายังใช้ ID เช่น9b6tMZSรูปภาพและแกลเลอรี่ ไม่ใช่จำนวนเต็มตามลำดับ ทำไมพวกเขาไม่ใช้จำนวนเต็ม (โดยเฉพาะอย่างยิ่งลำดับ) ในสิ่งที่กรณีมันคือการตัดสินใจที่ชาญฉลาดในการใช้รหัสสตริงดังกล่าวแทนจำนวนเต็ม?

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

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

2
รหัสสถานะ HTTP REST ที่แนะนำสำหรับ 'ถึงขีด จำกัด การร้องขอ'
ฉันกำลังรวบรวมข้อมูลจำเพาะสำหรับบริการ REST ซึ่งเป็นส่วนหนึ่งที่จะรวมความสามารถในการเร่งความเร็วให้กับผู้ใช้ทั้งในกลุ่มและรายบุคคล เท่ากันหมดเวลาสำหรับสิ่งเหล่านี้จะสามารถกำหนดค่าต่อทรัพยากร / กลุ่ม / บริการ ฉันแค่ดูข้อมูลจำเพาะ HTTP 1.1 และพยายามตัดสินใจว่าจะสื่อสารกับลูกค้าอย่างไรว่าคำขอจะไม่ได้รับการตอบสนองเพราะพวกเขาถึงขีด จำกัด แล้ว ตอนแรกฉันคิดว่ารหัสลูกค้า403 - Forbiddenเป็นรหัสแต่จากสเป็ค: การอนุญาตจะไม่ช่วยและไม่ควรทำซ้ำการร้องขอ รบกวนฉัน ปรากฏขึ้นจริงว่า503 - Service Unavailableเป็นสิ่งที่ดีกว่าที่จะใช้ - เพราะมันช่วยให้การสื่อสารของเวลาลองผ่านการใช้Retry-Afterส่วนหัว เป็นไปได้ว่าในอนาคตฉันอาจมองหาการสนับสนุน 'ซื้อ' คำขอเพิ่มเติมผ่านทางอีคอมเมิร์ซ (ในกรณีนี้มันจะดีถ้ารหัสลูกค้า402 - Payment Requiredได้รับการสรุป!) - แต่ฉันคิดว่านี่อาจถูกบีบให้เป็นการตอบสนอง 503 เช่นกัน คุณคิดว่าฉันควรใช้อันไหน หรือมีอีกอย่างที่ฉันไม่ได้พิจารณา?

4
REST - แลกเปลี่ยนระหว่างการเจรจาต่อรองเนื้อหาผ่านส่วนหัวยอมรับกับส่วนขยาย
ฉันกำลังทำงานผ่านการออกแบบ RESTful API เรารู้ว่าเราต้องการส่งคืน JSON และ XML สำหรับทรัพยากรที่กำหนด ฉันคิดว่าเราจะทำสิ่งนี้: GET /api/something?param1=value1 Accept: application/xml (or application/json) อย่างไรก็ตามมีบางคนที่ใช้ส่วนขยายสำหรับสิ่งนี้เช่น: GET /api/something.xml?parm1=value1 (or /api/something.json?param1=value1) อะไรคือการแลกเปลี่ยนกับวิธีการเหล่านี้? เป็นการดีที่สุดที่จะพึ่งพาส่วนหัวการยอมรับเมื่อไม่ได้ระบุนามสกุล แต่ให้เกียรตินามสกุลเมื่อระบุ? มีข้อเสียเปรียบกับวิธีการนั้นหรือไม่?

3
RPC-ish ใกล้จะเหมาะสมกว่า REST เมื่อใด
หลังจากดูการพูดคุยนี้ใน REST แล้ว Reuse and Serendipityโดย Steve Vinoski ฉันสงสัยว่ามีกรณีธุรกิจในโครงการกรีนฟิลด์สำหรับ (XML-) การตั้งค่า RPC-ish ที่ REST ไม่สามารถแก้ไขได้ในทางที่ดีขึ้น ปัญหา RPC สองสามอย่างที่เขากล่าวถึง: มุ่งเน้นที่ภาษา (จัดระบบให้เหมาะสมกับภาษาไม่ใช่วิธีอื่น ๆ ) "ทำให้ดูเป็นท้องถิ่น" (และรับมือกับความล้มเหลวและความหน่วงแฝงเป็นข้อยกเว้นมากกว่ากฎ) ตั้งใจที่จะเป็นภาษาที่เป็นอิสระ แต่ยังคงมี "การเรียกใช้ฟังก์ชัน" ข้ามภาษาเป็นส่วนผสมหลัก IDLสำเร็จรูป ภาพลวงตาของความปลอดภัยประเภท และอีกไม่กี่ ... เพียงเพิ่มบทละครลงเล็กน้อยผลการค้นหาทันใจของ Google สำหรับ RPC และ REST:

4
MVC / REST ควรส่งคืน 403 หรือ 404 สำหรับทรัพยากรที่เป็นของผู้ใช้รายอื่นหรือไม่
เมื่อทำงานกับไซต์ที่ใช้ทรัพยากร (เช่นแอปพลิเคชัน MVC หรือบริการ REST) ​​เรามีสองตัวเลือกหลักเมื่อไคลเอ็นต์พยายามเข้าถึงGETทรัพยากรที่พวกเขาไม่สามารถเข้าถึง: 403ซึ่งบอกว่าลูกค้าไม่ได้รับอนุญาต ; หรือ 404ซึ่งบอกว่าไม่มีทรัพยากร(หรือไม่สามารถหาได้) ภูมิปัญญาทั่วไปและการปฏิบัติทั่วไปดูเหมือนว่าจะตอบสนองกับความจริง - นั่นคือ 403 แต่ฉันสงสัยว่านี่เป็นสิ่งที่ถูกต้องหรือไม่ ระบบการเข้าสู่ระบบที่ปลอดภัยไม่เคยบอกเหตุผลที่ทำให้การล็อกอินล้มเหลว กล่าวคือตราบใดที่ลูกค้ามีความกังวลไม่มีความแตกต่างที่ตรวจพบได้ระหว่างชื่อผู้ใช้ที่ไม่มีอยู่และรหัสผ่านที่ไม่ถูกต้อง วัตถุประสงค์คือเพื่อไม่ให้ ID ผู้ใช้ - หรือที่แย่กว่านั้นคือที่อยู่อีเมล - ค้นพบได้ จากมุมมองความเป็นส่วนตัวดูเหมือนว่าปลอดภัยกว่าที่จะคืนค่า 404 ฉันนึกถึงเหตุการณ์ที่มีคนรายงานว่ามีผู้ชนะรายการเรียลลิตี้โชว์ (ผู้รอดชีวิตฉันคิดว่า) โดยดูว่าทรัพยากรใดไม่มีอยู่ใน ไซต์กับสิ่งที่ทำ ฉันกังวลเกี่ยวกับ 403 ที่อาจให้ข้อมูลที่ละเอียดอ่อนเช่นหมายเลขผลิตภัณฑ์หรือหมายเลขบัญชี มีเหตุผลที่น่าสนใจที่จะไม่ส่งคืน 404 หรือไม่? นโยบาย 404 อาจมีผลข้างเคียงเชิงลบหรือไม่ ถ้าไม่เป็นเช่นนั้นทำไมการปฏิบัติจึงไม่เป็นเรื่องปกติ

5
แนวทางปฏิบัติที่ดีที่สุดสำหรับการเรียกใช้โค้ดที่ไม่น่าเชื่อถือ
ฉันมีโครงการที่ฉันต้องการอนุญาตให้ผู้ใช้เรียกใช้รหัสหลามที่ไม่น่าเชื่อถือ ( เช่นนี้ ) กับเซิร์ฟเวอร์ของฉัน ฉันค่อนข้างใหม่สำหรับงูใหญ่และฉันต้องการหลีกเลี่ยงการทำผิดพลาดใด ๆ ที่แนะนำช่องโหว่ด้านความปลอดภัยหรือช่องโหว่อื่น ๆ เข้าสู่ระบบ มีแนวทางปฏิบัติที่ดีที่สุดให้อ่านแนะนำหรือตัวชี้อื่น ๆ ที่คุณสามารถให้บริการของฉันใช้งานได้ แต่ไม่สามารถใช้งานได้? นี่คือสิ่งที่ฉันพิจารณาแล้ว: ลบออก__builtins__จากบริบทที่จะห้ามการใช้งานของแพคเกจที่อาจเป็นอันตรายเช่นexec osผู้ใช้จะสามารถใช้แพ็คเกจที่ฉันให้ไว้ได้เท่านั้น ใช้เธรดเพื่อบังคับใช้การหมดเวลาที่เหมาะสม ฉันต้องการ จำกัด จำนวนหน่วยความจำทั้งหมดที่สามารถจัดสรรได้ภายในexecบริบท แต่ฉันไม่แน่ใจว่าเป็นไปได้หรือไม่ มีทางเลือกตรงไปตรงมาexecแต่ฉันไม่แน่ใจว่าสิ่งเหล่านี้จะเป็นประโยชน์ที่นี่: การใช้ast.NodeVisitorเพื่อตรวจจับการพยายามเข้าถึงวัตถุที่ไม่ปลอดภัย แต่ฉันควรห้ามวัตถุอะไร ค้นหาเครื่องหมายขีดล่างคู่ใด ๆ ในอินพุต (สง่างามน้อยกว่าตัวเลือกด้านบน) การใช้PyPyหรือสิ่งที่คล้ายกับรหัส sandbox หมายเหตุ:ฉันทราบว่ามีล่ามที่ใช้ JavaScript อย่างน้อยหนึ่งตัว ที่จะไม่ทำงานในสถานการณ์ของฉัน

7
อะไรคือปัจจัยในการตัดสินใจเลือกเปิดเผยบริการเว็บเป็นบริการ SOAP หรือ REST
เท่าที่ฉันเห็นการบริโภค SOAP ต้องใช้ SOAP stack ดังนั้นจึงยากสำหรับลูกค้าของคุณที่จะใช้เช่นพวกเขาต้องการให้แน่ใจว่าพวกเขามี SOAP stack ในสถานที่ที่จัดรูปแบบข้อมูล POST และส่วนหัวได้อย่างถูกต้อง โครงสร้างข้อมูลในขณะที่ REST คุณเพียงแค่ร้องขอ HTTP GET พร้อมอาร์กิวเมนต์ในสตริงการสืบค้นและรับข้อความที่ฉันคิดว่าน่าจะเป็น XML กลับมา ดังนั้นค่าใช้จ่ายพิเศษ / ความซับซ้อนของ SOAP ให้อะไรคุณเมื่อไหร่ที่คุณต้องการและเมื่อไหร่ที่คุณและคุณควรจะทำโดยไม่ต้องทำ?

10
การออกแบบ API: แนวทางที่เป็นรูปธรรมและเป็นนามธรรม - แนวทางปฏิบัติที่ดีที่สุด
เมื่อพูดคุยเกี่ยวกับ API ระหว่างระบบ (ในระดับธุรกิจ) มักจะมีมุมมองที่แตกต่างกันสองประการในทีมของเรา: บางคนชอบมากกว่า - ให้พูดว่า - วิธีนามธรรมทั่วไป ตัวอย่าง: การออกแบบ API ค้นหา "บุคคล" แบบง่าย รุ่นที่เป็นรูปธรรมจะเป็น searchPerson(String name, boolean soundEx, String firstName, boolean soundEx, String dateOfBirth) คนที่ชื่นชอบเวอร์ชั่นคอนกรีตพูดว่า: API คือการจัดทำเอกสารด้วยตนเอง มันง่ายที่จะเข้าใจ มันง่ายต่อการตรวจสอบ (คอมไพเลอร์หรือเป็นเว็บเซอร์: การตรวจสอบสคีมา) จูบ กลุ่มคนอื่น ๆ ในทีมของเราจะพูดว่า "นั่นเป็นเพียงรายการของเกณฑ์การค้นหา" searchPerson(List<SearchCriteria> criteria) กับ SearchCritera { String parameter, String value, Map<String, String> …

4
ฉันจะออกแบบเว็บเซอร์ RESTful ให้ใช้บุคคลที่สาม (เช่น Google, Facebook, Twitter) สำหรับการตรวจสอบได้อย่างไร
สำหรับงานของฉันเรามี webservice สงบดีที่เราสร้างขึ้นที่เราใช้ในการขับเคลื่อนเว็บไซต์สองสามที่เรามี โดยทั่วไปเว็บเซอร์วิซให้คุณสร้างและทำงานกับตั๋วสนับสนุนและเว็บไซต์รับผิดชอบส่วนหน้า การร้องขอบริการเว็บเซอร์ใด ๆ ใช้ส่วนหัวรับรองความถูกต้องซึ่งเราใช้ในการตรวจสอบผู้ใช้และรหัสผ่านสำหรับการโทรแต่ละครั้ง ในปีนี้เราต้องการขยายตัวเลือกการเข้าสู่ระบบของเราเพื่อให้ผู้ใช้บนเว็บไซต์สามารถเข้าสู่ระบบผ่านทาง Google, Twitter และ Facebook อย่างไรก็ตามฉันมีปัญหามากมายในการหาวิธีการออกแบบสิ่งนี้ดังนั้นเว็บเซอร์วิซจึงสามารถใช้ผู้ให้บริการการพิสูจน์ตัวตนบุคคลที่สามเพื่อให้แน่ใจว่าผู้ใช้เป็นคนที่พวกเขาพูด มีวิธีปฏิบัติที่ดีที่สุดในการทำเช่นนี้หรือไม่? ขณะนี้เรากำลังคิดที่จะให้เว็บไซต์จัดการกับการรับรองความถูกต้องของผู้ใช้แล้วใช้การเรียก setSessionId ใหม่ที่ลงทะเบียนเซสชันปัจจุบันด้วยเว็บเซอร์แบ็กเอนด์ คำขอเพิ่มเติมแต่ละรายการไปยังเว็บเซอร์วิซจะส่งผ่าน sessionId นั้นและจะตรวจสอบความถูกต้อง สิ่งเหล่านี้ดูเหมือนจะโอเค แต่ฉันมีความรู้สึกที่ด้านหลังของหัวของฉันที่ฉันไม่ได้คิดเรื่องนี้ผ่านและทุกการเรียกดูฟอรั่มของฉันและการอ่านรายละเอียด Oauth และ openid เป็นเพียงทำให้ฉันสับสนมากขึ้น เคล็ดลับใด ๆ สำหรับวิธีแก้ไขปัญหานี้

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