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

REST (Representational State Transfer) เป็นรูปแบบของสถาปัตยกรรมซอฟต์แวร์สำหรับระบบไฮเปอร์มีเดียแบบกระจายเช่นเวิลด์ไวด์เว็บ มันได้รับความนิยมเพิ่มขึ้นเมื่อเทียบกับสถาปัตยกรรม RPC เช่น SOAP เนื่องจากการยกเลิกการเชื่อมต่อภายในไคลเอ็นต์จากเซิร์ฟเวอร์ที่มาจากการมีอินเตอร์เฟสที่สม่ำเสมอระหว่างระบบที่แตกต่างกัน

3
จะเข้าถึงข้อมูลส่วนหัว HTTP ในคอนโทรลเลอร์ Spring MVC REST ได้อย่างไร
ฉันใหม่กับการเขียนโปรแกรมเว็บโดยทั่วไปโดยเฉพาะใน Java ดังนั้นฉันเพิ่งเรียนรู้ว่าส่วนหัวและร่างกายคืออะไร ฉันกำลังเขียนบริการ RESTful โดยใช้ Spring MVC ฉันสามารถสร้างบริการที่เรียบง่ายด้วย@RequestMappingในตัวควบคุมของฉัน ฉันต้องการความช่วยเหลือในการทำความเข้าใจวิธีรับข้อมูลส่วนหัว HTTP จากคำขอที่มาถึงวิธีการของฉันในส่วนควบคุมบริการ REST ของฉัน ฉันต้องการแยกวิเคราะห์ส่วนหัวและรับคุณลักษณะบางอย่างจากมัน คุณช่วยอธิบายได้อย่างไรว่าฉันจะไปรับข้อมูลนั้น

4
REST API - DTOs หรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ ขณะนี้ฉันกำลังสร้าง REST-API สำหรับโครงการและได้อ่านบทความตามบทความเกี่ยวกับแนวทางปฏิบัติที่ดีที่สุด ดูเหมือนว่าหลายคนจะต่อต้าน DTO และเพียงแค่เปิดเผยรูปแบบโดเมนในขณะที่คนอื่น ๆ คิดว่า DTOs (หรือโมเดลผู้ใช้หรือสิ่งที่คุณต้องการเรียกใช้) เป็นแนวปฏิบัติที่ไม่ดี ส่วนตัวแล้วฉันคิดว่าบทความนี้มีเหตุผลมากมาย อย่างไรก็ตามฉันยังเข้าใจข้อเสียของ DTOs ด้วยรหัสการแมปพิเศษทั้งหมดโมเดลโดเมนที่อาจเหมือน 100% กับ DTO-counterpart และอื่น ๆ API ของเราส่วนใหญ่ถูกสร้างขึ้นเพื่อให้ลูกค้ารายอื่นอาจใช้ข้อมูลอย่างไรก็ตามถ้าเราทำถูกต้องเราก็ต้องการที่จะใช้มันสำหรับเว็บ GUI ของเราเองถ้าเป็นไปได้ สิ่งที่เราอาจไม่ต้องการเปิดเผยข้อมูลโดเมนทั้งหมดให้กับผู้ใช้ไคลเอนต์อื่น ๆ ข้อมูลส่วนใหญ่จะสมเหตุสมผลในเว็บแอพพลิเคชันของเราเอง นอกจากนี้เราอาจไม่ต้องการเปิดเผยข้อมูลทั้งหมดเกี่ยวกับวัตถุในทุกสถานการณ์โดยเฉพาะความสัมพันธ์กับวัตถุอื่น ๆ เป็นต้น ตัวอย่างเช่นหากเราแสดงรายการของวัตถุเฉพาะเราไม่จำเป็นต้องเปิดเผยลำดับชั้นวัตถุทั้งหมด เพื่อที่ลูกของวัตถุจะไม่ถูกเปิดเผย แต่สามารถค้นพบได้ผ่านลิงก์ (เกลียดชัง) ฉันควรจะแก้ไขปัญหานี้อย่างไร ฉันกำลังคิดที่จะใช้ Jackson mixins ในโมเดลโดเมนของเราเพื่อควบคุมข้อมูลที่จะได้รับจากสถานการณ์ที่แตกต่างกัน หรือเราควรใช้ DTO ตลอดทาง …
154 java  spring  rest  dto  hateoas 

11
ทำไมคนเราถึงใช้ REST แทนการให้บริการแบบ SOAP? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน7 ปีที่ผ่านมา ปรับปรุงคำถามนี้ เข้าร่วมการสาธิตที่น่าสนใจเกี่ยวกับ REST ในวันนี้อย่างไรก็ตามฉันไม่สามารถนึกถึงเหตุผลเดียว (หรือไม่มีการนำเสนอ) ทำไม REST ถึงดีกว่าหรือง่ายกว่าในการใช้งาน อะไรคือสาเหตุที่ทำให้ทุกคนใน "โลกแห่งความจริง" ใช้ REST แทน SOAP based Services?
153 web-services  rest 

5
การโทรแบบ REST PUT / POST / DELETE ใดที่ควรส่งคืนโดยการประชุม?
ตาม "REST อุดมการณ์" สิ่งที่ควรอยู่ในเนื้อหาการตอบสนองสำหรับคำขอ PUT / POST / DELETE สิ่งที่เกี่ยวกับรหัสส่งคืน? คือHTTP_OKพอ? อะไรคือเหตุผลของการประชุมเช่นนั้นถ้ามี? ฉันพบโพสต์ที่ดีที่อธิบายความแตกต่าง POST / PUT: POST เทียบกับ PUT แต่ก็ยังไม่ตอบคำถามของฉัน
153 rest  http  post  http-delete 

4
ออกแบบ RESTful query API พร้อมด้วยรายการพารามิเตอร์แบบยาว [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันต้องออกแบบ RESTful query API ซึ่งจะส่งคืนชุดของออบเจ็กต์ตามตัวกรองบางตัว วิธี HTTP ปกติสำหรับสิ่งนี้คือ GET ปัญหาเดียวก็คือมันสามารถมีตัวกรองอย่างน้อยหนึ่งโหลและถ้าเราผ่านมันทั้งหมดเป็นพารามิเตอร์การสืบค้น URL อาจยาวมาก (นานพอที่จะถูกบล็อกโดยไฟร์วอลล์บางส่วน) การลดจำนวนพารามิเตอร์ไม่ใช่ตัวเลือก อีกทางเลือกหนึ่งที่ฉันคิดว่าใช้ประโยชน์จากวิธีการโพสต์บน URI และส่งตัวกรองเป็นส่วนหนึ่งของเนื้อหาของโพสต์ นี่เป็นสิ่งที่ต่อต้านการ RESTfull (การเรียก POST เพื่อค้นหาข้อมูล) ใครมีข้อเสนอแนะการออกแบบที่ดีกว่า?


8
ฉันจะเลือกรหัสสถานะ HTTP ใน REST API สำหรับ“ ยังไม่พร้อมลองอีกครั้งในภายหลัง” ได้อย่างไร [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ ฉันกำลังพัฒนา RESTful API ซึ่งhttp://server/thingyapi/thingyblob/1234ส่งคืนไฟล์ (หรือที่รู้จักว่า "blob") ที่เกี่ยวข้องกับ thingy # 1234 เพื่อดาวน์โหลด แต่อาจเป็นได้ว่ามีการร้องขอในเวลาที่ไฟล์ไม่มีอยู่ในเซิร์ฟเวอร์ แต่ส่วนใหญ่จะสามารถใช้งานได้ในภายหลัง มีกระบวนการแบทช์ในเซิร์ฟเวอร์ที่สร้าง blobs ทั้งหมดสำหรับทุกสิ่ง Thingy 1234 มีอยู่แล้วและมีข้อมูลอื่นนอกเหนือจาก blob แล้ว เซิร์ฟเวอร์ยังไม่ได้สร้างสิ่งที่เป็นก้อน 1234 ฉันไม่ต้องการกลับ 404; สำหรับสิ่งที่ไม่มีอยู่จริง นี่คือสิ่งที่มีอยู่ แต่หยดยังไม่ได้ถูกสร้างขึ้น ค่อนข้างชอบวิดีโอ YouTube ที่ "กำลังดำเนินการ" ฉันไม่คิดว่ารหัสการเปลี่ยนเส้นทางจะเหมาะสมเช่นกัน ไม่มี URL "อื่น ๆ " ให้ลอง รหัสสถานะ HTTP ที่ถูกต้องที่จะส่งคืนในกรณีดังกล่าวคืออะไร

11
โทรสงบใน Java
ฉันจะโทรหาสงบใน Java อย่างไรก็ตามฉันไม่รู้วิธีโทรออก ฉันต้องใช้การเชื่อมต่อ URL หรืออื่น ๆ หรือไม่? ทุกคนสามารถช่วยฉันได้ ขอบคุณ.
150 java  rest 

7
Django REST Framework: การเพิ่มฟิลด์เพิ่มเติมใน ModelSerializer
ฉันต้องการทำให้เป็นอนุกรมรุ่น แต่ต้องการรวมเขตข้อมูลเพิ่มเติมที่ต้องทำการค้นหาฐานข้อมูลบางอย่างในอินสแตนซ์รูปแบบที่จะต่อเนื่อง: class FooSerializer(serializers.ModelSerializer): my_field = ... # result of some database queries on the input Foo object class Meta: model = Foo fields = ('id', 'name', 'myfield') วิธีที่ถูกต้องในการทำเช่นนี้คืออะไร? ฉันเห็นว่าคุณสามารถส่งต่อใน "บริบท" พิเศษเพื่อ serializer เป็นคำตอบที่ถูกต้องในฟิลด์เพิ่มเติมในพจนานุกรมบริบทหรือไม่ ด้วยวิธีการที่ตรรกะของการได้รับข้อมูลที่ฉันต้องการจะไม่เป็นตนเองมีความหมาย serializer my_fieldซึ่งเหมาะเป็นอย่างยิ่งตั้งแต่ทุกกรณีจะต้องต่อเนื่อง ที่อื่นในเอกสาร DRF serializers มันบอกว่า "เขตข้อมูลพิเศษสามารถสอดคล้องกับคุณสมบัติใด ๆ หรือ callable ในรูปแบบ" ฟิลด์พิเศษที่ฉันกำลังพูดถึงคืออะไร ฉันควรกำหนดฟังก์ชั่นในการFooกำหนดรูปแบบของที่คืนmy_fieldค่าและใน serializer ฉันขอ …

13
การทำธุรกรรมในส่วนที่เหลือ?
ฉันสงสัยว่าคุณจะใช้งานกรณีการใช้งานต่อไปนี้ได้อย่างไรใน REST มันเป็นไปได้ที่จะทำโดยไม่สูญเสียรูปแบบแนวคิด? อ่านหรืออัปเดตหลายทรัพยากรภายในขอบเขตของธุรกรรมเดียว ตัวอย่างเช่นโอนเงิน $ 100 จากบัญชีธนาคารของ Bob ไปยังบัญชีของ John เท่าที่ฉันสามารถบอกได้วิธีเดียวที่จะใช้สิ่งนี้คือการโกง คุณสามารถโพสต์ทรัพยากรที่เกี่ยวข้องกับ John หรือ Bob และดำเนินการทั้งหมดโดยใช้ธุรกรรมเดียว เท่าที่ฉันกังวลนี้แบ่งสถาปัตยกรรม REST เพราะคุณเป็นช่องสัญญาณการโทร RPC ผ่าน POST แทนการใช้งานจริงบนทรัพยากรแต่ละรายการ
147 rest 

7
พารามิเตอร์หลักของ Node.js package.json
ฉันได้ทำการค้นหาค่อนข้างเรียบร้อยแล้ว อย่างไรก็ตามยังคงมีข้อสงสัยเกี่ยวกับพารามิเตอร์หลักใน package.json ของ Node.js การเติมลงในฟิลด์นี้จะช่วยได้อย่างไร ถามอีกวิธีหนึ่งฉันสามารถเริ่มโมดูลในสไตล์ที่แตกต่างได้ไหมถ้าฟิลด์นี้นำเสนอ? ฉันสามารถเติมสคริปต์มากกว่าหนึ่งตัวในพารามิเตอร์หลักได้หรือไม่ ถ้าใช่พวกเขาจะเริ่มเป็นสองหัวข้อหรือไม่? ถ้าไม่ฉันจะเริ่มสองสคริปต์ในโมดูลและให้พวกเขาทำงานในแบบคู่ขนานได้อย่างไร ฉันรู้ว่าคำถามที่สองค่อนข้างแปลก เป็นเพราะฉันได้โฮสต์แอปพลิเคชั่น Node.js บน OpenShift แต่แอปพลิเคชันประกอบด้วยสององค์ประกอบหลัก หนึ่งเป็น REST API และอีกหนึ่งเป็นบริการส่งการแจ้งเตือน ฉันกลัวว่ากระบวนการส่งการแจ้งเตือนจะบล็อก REST API หากมีการใช้งานเป็นเธรดเดียว อย่างไรก็ตามพวกเขาต้องเชื่อมต่อกับคาร์ทริดจ์ MongoDB เดียวกัน ยิ่งกว่านั้นฉันต้องการประหยัดหนึ่งเกียร์หากทั้งสององค์ประกอบสามารถให้บริการในเกียร์เดียวกันได้ถ้าเป็นไปได้ ข้อเสนอแนะใด ๆ ยินดีต้อนรับ

4
วิธีการโพสต์ข้อมูลในแบบฟอร์มด้วย Spring RestTemplate
ฉันต้องการแปลงตัวอย่างข้อมูล curl (ทำงาน) ต่อไปนี้เป็นการเรียก RestTemplate: curl -i -X POST -d "email=first.last@example.com" https://app.example.com/hr/email ฉันจะส่งพารามิเตอร์อีเมลได้อย่างถูกต้องได้อย่างไร รหัสต่อไปนี้ส่งผลให้เกิดการตอบสนอง 404 ไม่พบ: String url = "https://app.example.com/hr/email"; Map<String, String> params = new HashMap<String, String>(); params.put("email", "first.last@example.com"); RestTemplate restTemplate = new RestTemplate(); ResponseEntity<String> response = restTemplate.postForEntity( url, params, String.class ); ฉันพยายามกำหนดการโทรที่ถูกต้องใน PostMan และฉันสามารถทำให้มันทำงานได้อย่างถูกต้องโดยการระบุพารามิเตอร์อีเมลเป็นพารามิเตอร์ "form-data" ในเนื้อหา วิธีที่ถูกต้องเพื่อให้บรรลุหน้าที่การทำงานนี้ใน RestTemplate คืออะไร?

11
Spring MVC - วิธีคืนค่าสตริงธรรมดาเป็น JSON ใน Rest Controller
คำถามของฉันคือการติดตามนี้คำถาม @RestController public class TestController { @RequestMapping("/getString") public String getString() { return "Hello World"; } } ในข้างต้น Spring จะเพิ่ม "Hello World" ลงในเนื้อหาตอบกลับ ฉันจะส่งคืนสตริงเป็นการตอบสนอง JSON ได้อย่างไร ฉันเข้าใจว่าฉันสามารถเพิ่มคำพูดได้ แต่มันให้ความรู้สึกเหมือนแฮ็คมากกว่า โปรดยกตัวอย่างเพื่อช่วยอธิบายแนวคิดนี้ หมายเหตุ:ฉันไม่ต้องการให้สิ่งนี้เขียนตรงไปยังเนื้อหาการตอบสนองของ HTTP ฉันต้องการส่งคืน String ในรูปแบบ JSON (ฉันใช้ตัวควบคุมของฉันกับRestyGWTซึ่งต้องการให้การตอบกลับอยู่ในรูปแบบ JSON ที่ถูกต้อง)
146 java  json  spring  rest  spring-mvc 

5
บริการเว็บสไตล์ Netflix หรือ Twitter ควรใช้ REST หรือ SOAP หรือไม่? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันใช้บริการ REST สองแห่ง: Twitter และ Netflix ทั้งสองครั้งฉันพยายามหาวิธีใช้และตรรกะที่เกี่ยวข้องในการตัดสินใจเปิดเผยบริการเหล่านี้เป็น REST แทนที่จะเป็น SOAP ฉันหวังว่าจะมีใครบางคนสามารถบอกฉันถึงสิ่งที่ฉันหายไปและอธิบายว่าเพราะเหตุใด REST จึงถูกใช้เป็นบริการติดตั้งสำหรับบริการเช่นนี้ การใช้เซอร์วิส REST จะใช้เวลานานกว่าการใช้เซอร์วิส SOAP อย่างไม่มีที่สิ้นสุด มีเครื่องมือสำหรับภาษา / กรอบ / แพลตฟอร์มที่ทันสมัยทั้งหมดเพื่ออ่านใน WSDL และคลาสพรอกซีเอาท์พุทและไคลเอนต์ การใช้บริการ REST นั้นทำด้วยมือและ - รับสิ่งนี้ - โดยการอ่านเอกสาร นอกจากนี้ในขณะที่ใช้งานบริการทั้งสองนี้คุณจะต้อง "คาดเดา" ว่าอะไรจะกลับมาที่ท่อเนื่องจากไม่มีสคีมาหรือเอกสารอ้างอิงจริง เหตุใดจึงต้องเขียนบริการ REST ที่ส่งคืน XML อยู่ดี ความแตกต่างเพียงอย่างเดียวคือเมื่อใช้ REST …
145 rest  soap 

2
AngularJS $ RESTful ตัวอย่างทรัพยากร
ฉันต้องการใช้ทรัพยากร $ เพื่อเรียกใช้บริการทางเว็บ RESTful ของฉัน (ซึ่งฉันยังทำงานอยู่) แต่ฉันต้องการทราบว่าฉันได้แก้ไขสคริปต์ AngularJS ของฉันก่อนหรือไม่ สิ่งที่ต้องทำ DTO มี: {id, order, content, done} :cmdคือฉันสามารถโทรapi/1/todo/resetเพื่อล้างตาราง todo ในฐานข้อมูล นี่คือรหัสที่มีความคิดเห็นของความเข้าใจของฉัน: function TodoService($resource) { var src = $resource('api/1/todo/:id:cmd', {id: "@id", cmd: "@cmd"}, //parameters default { ListTodos: { method: "GET", params: {} }, GetTodo: { method: "GET", params: { id: 0 } …

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