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

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

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 เกิดขึ้น …

16
Spring MVC @PathVariable ถูกตัดทอน
ฉันมีตัวควบคุมที่ให้การเข้าถึงข้อมูลสงบ: @RequestMapping(method = RequestMethod.GET, value = Routes.BLAH_GET + "/{blahName}") public ModelAndView getBlah(@PathVariable String blahName, HttpServletRequest request, HttpServletResponse response) { ปัญหาที่ฉันพบคือถ้าฉันไปที่เซิร์ฟเวอร์ด้วยตัวแปรพา ธ ที่มีอักขระพิเศษมันจะถูกตัดทอน ตัวอย่างเช่น: http: // localhost: 8080 / blah-server / blah / get / blah2010.08.19-02: 25: 47 พารามิเตอร์ blahName จะเป็น blah2010.08 อย่างไรก็ตามการเรียกร้องให้ request.getRequestURI () มีข้อมูลทั้งหมดที่ส่งผ่าน มีความคิดใดที่จะป้องกันไม่ให้ Spring ตัดทอน @PathVariable
142 java  spring  rest  spring-mvc  get 

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

5
RestSharp JSON การโพสต์พารามิเตอร์
ฉันกำลังพยายามโทรหา REST ขั้นพื้นฐานมากไปยัง MVC 3 API ของฉันและพารามิเตอร์ที่ฉันส่งผ่านนั้นไม่ได้ผูกกับวิธีการดำเนินการ ไคลเอนต์ var request = new RestRequest(Method.POST); request.Resource = "Api/Score"; request.RequestFormat = DataFormat.Json; request.AddBody(request.JsonSerializer.Serialize(new { A = "foo", B = "bar" })); RestResponse response = client.Execute(request); Console.WriteLine(response.Content); เซิร์ฟเวอร์ public class ScoreInputModel { public string A { get; set; } public string B { get; …

5
ตัวอย่างจริงสำหรับ HATEOAS (REST-architecture) [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ดังที่ทุกคนอาจสังเกตเห็นมี REST-APIs ของปลอม / เป็นพื้นฐานจำนวนมากใน wild (ซึ่งใช้ HTTP-API และเรียกมันว่า REST โดยไม่ปฏิบัติตามข้อกำหนดของ ผู้ที่โด่งดังของ Roy T. Fieldingคนที่ระบุกระบวนทัศน์ REST เป็นครั้งแรก) ฉันไม่สามารถหาตัวอย่างที่เป็นประโยชน์ของการใช้งาน REST แบบไฮเปอร์เท็กซ์ได้อย่างแท้จริงพร้อมกับคำจำกัดความประเภทสื่อเฉพาะแอปพลิเคชันที่เกี่ยวข้องสำหรับการเปลี่ยนสถานะ มีตัวอย่างของการติดตั้งใช้งานที่เปิดเผยต่อสาธารณะหรือไม่?
140 api  rest  hateoas 

6
ความแตกต่างระหว่างทรัพยากรและจุดสิ้นสุดคืออะไร?
ฉันเคยได้ยินทั้ง "ทรัพยากร" และ "ปลายทาง" เพื่ออ้างถึงสิ่งเดียวกัน ดูเหมือนว่าทรัพยากรเป็นคำที่ใหม่กว่า ความแตกต่างระหว่างพวกเขาคืออะไร? "ทรัพยากร" แสดงถึงการออกแบบที่สงบเงียบหรือไม่?

12
วิธี RESTful ที่ดีที่สุดในการคืนจำนวนรายการทั้งหมดในวัตถุคืออะไร
ฉันกำลังพัฒนาบริการ REST API สำหรับเว็บไซต์เครือข่ายสังคมขนาดใหญ่ที่ฉันเข้าร่วมจนถึงตอนนี้มันใช้งานได้ดี ฉันสามารถออกGET, POST, PUTและDELETEการร้องขอไปยัง URL ที่วัตถุและส่งผลกระทบต่อข้อมูลของฉัน อย่างไรก็ตามข้อมูลนี้ได้รับการเพจ (จำกัด ผลลัพธ์ได้ครั้งละ 30 รายการ) อย่างไรก็ตามวิธีที่ดีที่สุดในการได้รับจำนวนสมาชิกทั้งหมดผ่าน API ของฉันคืออะไร ขณะนี้ฉันส่งคำขอไปยังโครงสร้าง URL ดังต่อไปนี้: / api / members— ส่งคืนรายชื่อสมาชิก (ครั้งละ 30 รายการตามที่กล่าวไว้ข้างต้น) / api / members / 1 -มีผลต่อสมาชิกเดี่ยวขึ้นอยู่กับวิธีการร้องขอที่ใช้ คำถามของฉันคือฉันจะใช้โครงสร้าง URL ที่คล้ายกันเพื่อรับจำนวนสมาชิกทั้งหมดในใบสมัครของฉันได้อย่างไร เห็นได้ชัดว่าขอเพียงidฟิลด์ (คล้ายกับกราฟ API ของ Facebook) และการนับผลลัพธ์จะไม่ได้ผลเนื่องจากมีเพียง 30 รายการเท่านั้นที่จะถูกส่งคืน
139 rest  restful-url 

2
การรักษาความปลอดภัย REST API ของฉันด้วย OAuth ในขณะที่ยังคงอนุญาตให้ตรวจสอบสิทธิ์ผ่านผู้ให้บริการ OAuth บุคคลที่สาม (ใช้ DotNetOpenAuth)
ฉันมีผลิตภัณฑ์ที่มี REST API ตรงไปตรงมาเพื่อให้ผู้ใช้ผลิตภัณฑ์สามารถรวมเข้ากับคุณสมบัติของผลิตภัณฑ์ได้โดยตรงโดยไม่ต้องใช้ส่วนต่อประสานผู้ใช้บนเว็บของฉัน เมื่อเร็ว ๆ นี้ฉันได้รับความสนใจจากบุคคลที่สามที่หลากหลายเกี่ยวกับการรวมไคลเอ็นต์เดสก์ท็อปเข้ากับ API เพื่อให้ผู้ใช้ผลิตภัณฑ์ของฉันเข้าถึงข้อมูลโดยใช้แอปพลิเคชันบุคคลที่สามนั้น ฉันเห็นว่าแอปพลิเคชันที่ต้องการใช้ Twitter รับรองความถูกต้องโดยใช้หน้าเข้าสู่ระบบซึ่งโฮสต์โดย Twitter ซึ่งให้สิทธิ์แอปพลิเคชันเฉพาะในการเข้าถึงข้อมูลของผู้ใช้นั้น คุณคลิกปุ่ม "อนุญาต" หรือ "ปฏิเสธ" และกระบวนการรับรองความถูกต้องเสร็จสมบูรณ์ Facebook ใช้กลไกเดียวกับที่ฉันบอกได้ดีที่สุด จากการวิจัยเพิ่มเติมดูเหมือนว่านี่จะเป็น OAuth ในการดำเนินการและเนื่องจาก API ของฉันเป็นแบบ. Net ฉันคิดว่าฉันควรใช้ DotNetOpenAuth และให้กลไกที่คล้ายกัน น่าเสียดายที่ตัวอย่างมีการจัดทำเป็นเอกสารอย่างกระจัดกระจาย (ถ้าเป็นอย่างนั้น) และแบบฝึกหัดเดียวที่ฉันสามารถค้นหาทางออนไลน์ดูเหมือนจะเพ่งความสนใจไปที่การให้คุณมีกลไกการเข้าสู่ระบบสำหรับผู้ใช้ของคุณเพื่อให้พวกเขาสามารถเข้าสู่เว็บไซต์ สิ่งที่ฉันอยากทำจริงๆคือให้ REST API ของฉันจัดการกับการรับรองความถูกต้องหลักและตรรกะทางธุรกิจทั้งหมดสำหรับเว็บแอปพลิเคชันของฉันและมีแอปพลิเคชันบนเว็บของฉันเป็นแอพพลิเคชันอื่นที่ใช้ API ผ่าน OAuth ผู้ใช้จะรับรองความถูกต้องบนเว็บไซต์โดยใช้ชื่อผู้ใช้และรหัสผ่านโดยตรงหรือผ่านทางผู้ให้บริการบุคคลที่สามเช่น MyOpenID หรือ Facebook จากนั้นเว็บไซต์จะใช้โทเค็นที่ส่งคืนเพื่อรับรองความถูกต้องกับ REST API ดูเหมือนว่าฉันต้องการ API ของฉันเพื่อโฮสต์บริการ …

11
ฉันจะส่งพารามิเตอร์หลายตัวไปยัง ASP.Net Web API GET ได้อย่างไร
ฉันใช้. Net MVC4 Web API เพื่อ (หวังว่า) จะใช้ api RESTful ฉันต้องผ่านพารามิเตอร์สองสามตัวไปยังระบบและให้มันดำเนินการบางอย่างจากนั้นส่งคืนรายการของวัตถุเป็นผลลัพธ์ โดยเฉพาะฉันกำลังผ่านสองวันและกลับมาบันทึกที่อยู่ระหว่างพวกเขา ฉันยังติดตามระเบียนที่ส่งคืนเพื่อให้การโทรที่ตามมาไม่ได้รับการประมวลผลอีกครั้งในระบบ ฉันได้พิจารณาแนวทางบางประการแล้ว: การทำให้พารามิเตอร์เป็นอนุกรมในสตริง JSON เดียวและแยกออกจากกันใน API http://forums.asp.net/t/1807316.aspx/1 ส่งผ่านพารามิเตอร์ในสตริงการสืบค้น วิธีที่ดีที่สุดในการส่งพารามิเตอร์การค้นหาหลายรายการไปยัง api พักผ่อนคืออะไร การกำหนด params ในเส้นทาง: api / controller / date1 / date2 การใช้ POST ที่ให้ฉันผ่านวัตถุโดยมีพารามิเตอร์ ค้นคว้า ODATA ตั้งแต่ Web API (ปัจจุบัน) รองรับ ฉันยังไม่ได้ทำสิ่งนี้มากนักดังนั้นฉันจึงไม่คุ้นเคย ดูเหมือนว่าวิธีปฏิบัติ REST ที่เหมาะสมจะระบุเมื่อมีการดึงข้อมูลคุณควรใช้ GET อย่างไรก็ตาม GET …

4
REST, HTTP DELETE และพารามิเตอร์
มีอะไรที่ไม่เกี่ยวข้องกับการระบุพารามิเตอร์ให้กับคำขอ HTTP DELETE หรือไม่ สถานการณ์ของฉันคือฉันกำลังสร้างโมเดล "คุณแน่ใจหรือไม่ว่าต้องการลบสิ่งนั้น" สถานการณ์ ในบางกรณีสถานะของทรัพยากรบ่งชี้ว่าการลบที่ร้องขออาจไม่ถูกต้อง คุณอาจนึกภาพบางสถานการณ์ที่ต้องมีการยืนยันการลบ วิธีแก้ปัญหาที่เรานำมาใช้คือการส่งพารามิเตอร์ไปยังคำขอลบเพื่อระบุว่าสามารถดำเนินการลบได้ ("? force_delete = true") เช่น DELETE http://server/resource/id?force_delete=true ฉันเชื่อว่ามันยังคงผ่อนคลายตั้งแต่: (a) ไม่มีการเปลี่ยนแปลงความหมายของ DELETE - ผู้ใช้ยังคงสามารถส่งคำขอ DELETE ตามปกติได้ แต่อาจล้มเหลวด้วย 409 และเนื้อหาของการตอบกลับจะอธิบายสาเหตุ ฉันบอกว่าอาจล้มเหลวเนื่องจาก (ด้วยเหตุผลที่ไม่คุ้มค่าที่จะอธิบาย) ในบางครั้งไม่มีเหตุผลที่จะแจ้งให้ผู้ใช้ทราบ (b) ไม่มีอะไรในวิทยานิพนธ์ของ Roy ที่ชี้ให้เห็นว่ามันขัดต่อเจตนารมณ์ของ REST - ทำไมถึงเป็นเช่นนั้นเนื่องจาก HTTP เป็นเพียงการใช้งาน REST เพียงครั้งเดียวดังนั้นทำไมการส่งผ่านพารามิเตอร์ HTTP จึงมีความสำคัญ ใครช่วยชี้ฉันด้วยคำพูดที่ชัดเจนว่าทำไมสิ่งนี้ถึงไม่สงบ? ในคำถามที่เกี่ยวข้องหากผู้ใช้ไม่ได้ระบุ force_delete ฉันจะส่งคืน409 Conflict- รหัสตอบกลับที่เหมาะสมที่สุดหรือไม่ …
135 http  rest 

12
เพจในคอลเลกชันที่เหลือ
ฉันสนใจที่จะเปิดเผยอินเทอร์เฟซ REST โดยตรงกับคอลเล็กชันของเอกสาร JSON (คิดว่าCouchDBหรือPersevere ) ปัญหาที่ฉันพบคือวิธีจัดการการGETดำเนินการบนคอลเลกชันรูทหากคอลเลกชันมีขนาดใหญ่ ตัวอย่างเช่นแกล้งทำเป็นว่าฉันกำลังเปิดเผยQuestionsตารางของ StackOverflow ซึ่งแต่ละแถวจะแสดงเป็นเอกสาร (ไม่ใช่ว่าจำเป็นต้องมีตารางดังกล่าวเป็นเพียงตัวอย่างที่เป็นรูปธรรมของชุด 'เอกสาร' ที่มีขนาดใหญ่) คอลเลกชันจะทำให้สามารถดูได้ที่/db/questionsกับ API CRUD ปกติGET /db/questions/XXX, PUT /db/questions/XXX, POST /db/questionsอยู่ในการเล่น วิธีมาตรฐานในการรับคอลเลกชันทั้งหมดคือGET /db/questionsแต่ถ้าการทิ้งแต่ละแถวเป็นออบเจ็กต์ JSON อย่างไร้เดียงสาคุณจะได้รับการดาวน์โหลดที่ค่อนข้างใหญ่และทำงานได้มากในส่วนของเซิร์ฟเวอร์ วิธีแก้ปัญหาคือการเพจ Dojo มีการแก้ไขปัญหานี้ในของJsonRestStoreผ่านทางส่วนขยาย RFC2616 สอดคล้องฉลาดของใช้ส่วนหัวกับหน่วยช่วงที่กำหนดเองRange itemsผลลัพธ์คือ a 206 Partial Contentที่ส่งคืนเฉพาะช่วงที่ร้องขอ ข้อได้เปรียบของวิธีนี้เหนือพารามิเตอร์การค้นหาคือมันจะทิ้งสตริงการสืบค้นไว้สำหรับ ... คิวรี (เช่นGET /db/questions/?score>200หรือบางครั้งและใช่ว่าจะเข้ารหัส%3E) แนวทางนี้ครอบคลุมพฤติกรรมที่ฉันต้องการอย่างสมบูรณ์ ปัญหาคือRFC 2616ระบุว่าในการตอบสนอง 206 (เน้นของฉัน): คำขอต้องมีรวมถึงข้อมูลส่วนหัวช่วง ( ส่วน 14.35 …

6
วิธีการโพสต์ข้อมูล JSON ด้วย PHP cURL
นี่คือรหัสของฉัน $url = 'url_to_post'; $data = array( "first_name" => "First name", "last_name" => "last name", "email"=>"email@gmail.com", "addresses" => array ( "address1" => "some address", "city" => "city", "country" => "CA", "first_name" => "Mother", "last_name" => "Lastnameson", "phone" => "555-1212", "province" => "ON", "zip" => "123 ABC" ) ); $data_string = …
134 php  json  rest  curl 

5
วิธีการส่งออกคำขอเฉพาะไปยังไฟล์โดยใช้บุรุษไปรษณีย์
ฉันต้องการส่งออกคำขอเฉพาะรายการหนึ่งจากส่วนขยายบุรุษไปรษณีย์ (โครเมียม) และส่งไปยังผู้พัฒนารายอื่นเพื่อให้เขานำเข้าได้) ฉันจะทำได้อย่างไร?
133 rest  postman 


3
แนวทางปฏิบัติที่ดีที่สุดของ REST API: อาร์กิวเมนต์ในสตริงการสืบค้นเทียบกับในเนื้อหาคำขอ
REST API สามารถมีอาร์กิวเมนต์ได้หลายที่: ในเนื้อความคำขอ - เป็นส่วนหนึ่งของเนื้อความ json หรือประเภท MIME อื่น ๆ ในสตริงแบบสอบถาม - เช่น/api/resource?p1=v1&p2=v2 เป็นส่วนหนึ่งของเส้นทาง URL - เช่น/api/resource/v1/v2 แนวทางปฏิบัติที่ดีที่สุดและข้อควรพิจารณาในการเลือกระหว่าง 1 และ 2 ข้างต้นคืออะไร? 2 VS 3 ถูกปกคลุมที่นี่
127 json  api  rest  http  query-string 

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