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

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

11
ข้อผิดพลาด Powershell v3 Invoke-WebRequest HTTPS
การใช้ Invoke-WebRequest และ Invoke-RestMethod ของ Powershell v3 ฉันใช้วิธี POST เพื่อโพสต์ไฟล์ json ไปยังเว็บไซต์ https คำสั่งที่ฉันใช้คือ $cert=New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("cert.crt") Invoke-WebRequest -Uri https://IPADDRESS/resource -Credential $cred -certificate $cert -Body $json -ContentType application/json -Method POST อย่างไรก็ตามเมื่อฉันพยายามใช้เมธอด GET เช่น: Invoke-WebRequest -Uri https://IPADDRESS/resource -Credential $cred -certificate $cert -Method GET ข้อผิดพลาดต่อไปนี้จะถูกส่งกลับ Invoke-RestMethod : The underlying connection was closed: An …
126 .net  rest  powershell  https 

14
คำขอ POST ผ่าน RestTemplate ใน JSON
ฉันไม่พบตัวอย่างวิธีแก้ปัญหาของฉันดังนั้นฉันจึงต้องการขอความช่วยเหลือจากคุณ ฉันไม่สามารถส่งคำขอ POST โดยใช้วัตถุ RestTemplate ใน JSON ได้ ทุกครั้งที่ได้รับ: org.springframework.web.client.HttpClientErrorException: 415 ประเภทสื่อที่ไม่รองรับ ฉันใช้ RestTemplate ด้วยวิธีนี้: ... restTemplate = new RestTemplate(); List<HttpMessageConverter<?>> list = new ArrayList<HttpMessageConverter<?>>(); list.add(new MappingJacksonHttpMessageConverter()); restTemplate.setMessageConverters(list); ... Payment payment= new Payment("Aa4bhs"); Payment res = restTemplate.postForObject("http://localhost:8080/aurest/rest/payment", payment, Payment.class); อะไรคือความผิดของฉัน?
126 java  json  spring  rest  resttemplate 

7
สร้างคำขอด้วย POST ซึ่งรหัสตอบกลับ 200 หรือ 201 และเนื้อหา
สมมติว่าฉันเขียนบริการ REST ซึ่งมีจุดประสงค์เพื่อเพิ่มรายการข้อมูลใหม่ให้กับระบบ ฉันวางแผนที่จะโพสต์ถึง http://myhost/serviceX/someResources สมมติว่าได้ผลฉันควรใช้รหัสตอบกลับอะไร และฉันจะคืนเนื้อหาอะไร ฉันกำลังดูคำจำกัดความของรหัสตอบกลับ HTTP และดูความเป็นไปได้เหล่านี้: 200: ส่งคืนเอนทิตีที่อธิบายหรือมีผลลัพธ์ของการกระทำ 201: ซึ่งหมายถึงสร้างแล้ว ความหมาย * คำขอได้รับการตอบสนองและส่งผลให้มีการสร้างทรัพยากรใหม่ ทรัพยากรที่สร้างขึ้นใหม่สามารถอ้างอิงได้โดย URI ที่ส่งคืนในเอนทิตีของการตอบกลับโดยมี URI ที่เฉพาะเจาะจงที่สุดสำหรับทรัพยากรที่กำหนดโดยฟิลด์ส่วนหัวตำแหน่ง การตอบกลับควรรวมเอนทิตีที่มีรายการลักษณะทรัพยากรและตำแหน่งที่ตั้งซึ่งผู้ใช้หรือตัวแทนผู้ใช้สามารถเลือกสิ่งที่เหมาะสมที่สุดได้ รูปแบบเอนทิตีถูกระบุโดยประเภทสื่อที่กำหนดในฟิลด์ส่วนหัวประเภทเนื้อหา * * * * อันหลังฟังดูสอดคล้องกับข้อมูลจำเพาะ Http มากขึ้น แต่ฉันไม่ชัดเจนว่าอะไร คำตอบควรรวมถึงเอนทิตีที่มีรายการลักษณะทรัพยากรและตำแหน่งที่ตั้ง วิธี ข้อเสนอแนะ? การตีความ?

8
Spring RestTemplate หมดเวลา
ฉันต้องการตั้งค่าระยะหมดเวลาการเชื่อมต่อสำหรับบริการพักที่แอปพลิเคชันเว็บของฉันใช้ ฉันใช้ RestTemplate ของ Spring เพื่อพูดคุยกับบริการของฉัน ฉันได้ทำการค้นคว้าและพบและใช้ xml ด้านล่าง (ใน xml แอปพลิเคชันของฉัน) ซึ่งฉันเชื่อว่ามีไว้เพื่อตั้งค่าการหมดเวลา ฉันใช้ Spring 3.0 ฉันยังพบปัญหาเดียวกันที่นี่การกำหนดค่าการหมดเวลาสำหรับ Spring webservices ด้วย RestTemplateแต่โซลูชันดูเหมือนจะไม่สะอาดฉันต้องการตั้งค่าการหมดเวลาผ่าน Spring config <bean id="RestOperations" class="org.springframework.web.client.RestTemplate"> <constructor-arg> <bean class="org.springframework.http.client.CommonsClientHttpRequestFactory"> <property name="readTimeout" value="${restURL.connectionTimeout}" /> </bean> </constructor-arg> </bean> ดูเหมือนว่าอะไรก็ตามที่ฉันตั้งค่า readTimeout เป็นฉันจะได้รับสิ่งต่อไปนี้: สายเคเบิลเครือข่ายถูกตัดการเชื่อมต่อ: รอประมาณ 20 วินาทีและรายงานข้อยกเว้นต่อไปนี้: org.springframework.web.client.ResourceAccessExcep ข้อผิดพลาด I / O: ไม่มีเส้นทางไปยังโฮสต์: เชื่อมต่อ; …

4
การลบทรัพยากรโดยใช้ http DELETE
ดังนั้นเนื่องจากคำกริยา DELETE ใน Http เป็น idempotent เมื่อฉันออกคำขอต่อไปนี้จะเกิดอะไรขึ้นที่สอง (หรือสามหรือสี่ ฯลฯ ... ) DELETE /person/123 ครั้งแรกทรัพยากรถูกลบและฉันส่งคืน 204 (สำเร็จไม่มีเนื้อหา) ฉันควรส่งคืน 204 ในการโทรครั้งต่อ ๆ ไปหรือ 404 (ไม่พบ)?
124 rest  http  http-delete 

7
Curl รับคำขอด้วยพารามิเตอร์ json
ฉันกำลังพยายามส่งคำขอ "GET" ไปยัง REST API ระยะไกลจาก Command Prompt ผ่าน cURL ดังนี้: curl -X GET -H "Content-type: application/json" -H "Accept: application/json" "http://server:5050/a/c/getName/{"param0":"pradeep"}" แต่กลับไม่มีผลลัพธ์ ฉันพยายาม ping URL โดยตรงจากเบราว์เซอร์ฉันสามารถรับคำตอบได้สำเร็จฉันไม่เข้าใจว่าคำสั่งมีอะไรผิดปกติ โดยทั่วไปฉันต้องการตั้งค่าการร้องขอ "GET" ไปยังบริการ REST ระยะไกลซึ่งให้ข้อมูล json แก่ฉันเป็นการตอบสนองผ่าน curl ใครช่วยชี้แนะหน่อยว่าฉันทำผิดอะไร ฉันลองโพสต์ต่างๆ แต่ทั้งหมดพูดถึงคำขอ POST ที่ไม่เกี่ยวกับ GET
124 json  rest  curl 

4
กำหนดเอง HTTP Authorization Header
ฉันสงสัยว่าสามารถใส่ข้อมูลที่กำหนดเองในส่วนหัวการอนุญาต HTTP ได้หรือไม่ เรากำลังออกแบบ RESTful API และเราอาจต้องการวิธีระบุวิธีการอนุญาตแบบกำหนดเอง ตัวอย่างเช่นเรียกว่าการFIRE-TOKENพิสูจน์ตัวตน สิ่งนี้จะถูกต้องและได้รับอนุญาตตามข้อกำหนด: Authorization: FIRE-TOKEN 0PN5J17HBGZHT7JJ3X82:frJIUN8DYpKDtOLCwo//yllqDzg= ส่วนแรกของสตริงที่สอง (ก่อน ':') คือคีย์ API ส่วนที่สองคือแฮชของสตริงข้อความค้นหา

10
การจัดการข้อยกเว้น Spring Resttemplate
ด้านล่างนี้คือข้อมูลโค้ด โดยพื้นฐานแล้วฉันพยายามเผยแพร่ข้อยกเว้นเมื่อรหัสข้อผิดพลาดเป็นอย่างอื่นที่ไม่ใช่ 200 ResponseEntity<Object> response = restTemplate.exchange(url.toString().replace("{version}", version), HttpMethod.POST, entity, Object.class); if(response.getStatusCode().value()!= 200){ logger.debug("Encountered Error while Calling API"); throw new ApplicationException(); } อย่างไรก็ตามในกรณีของการตอบสนอง 500 จากเซิร์ฟเวอร์ฉันได้รับข้อยกเว้น org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94) ~[spring-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] ฉันจำเป็นต้องสรุปวิธีการแลกเปลี่ยนเทมเพลตที่เหลือจริงๆหรือไม่? แล้วจุดประสงค์ของรหัสคืออะไร?

8
เหตุใดเราจึงต้องใช้บริการเว็บ RESTful
ฉันจะเรียนรู้บริการเว็บ RESTful (ดีกว่าที่จะบอกว่าฉันต้องทำสิ่งนี้เพราะเป็นส่วนหนึ่งของหลักสูตรปริญญาโท CS) ฉันได้อ่านข้อมูลบางอย่างใน Wikipedia และฉันได้อ่านบทความเกี่ยวกับ REST ที่ Sun Developer Network และฉันเห็นว่ามันไม่ใช่เรื่องง่ายเทคโนโลยีมีกรอบพิเศษสำหรับการสร้างแอป RESTful และมักถูกเปรียบเทียบกับบริการเว็บ SOAP และ โปรแกรมเมอร์ควรเข้าใจว่าเมื่อใดควรใช้ SOAP และเมื่อใดที่ REST อาจเป็นแนวทางที่ดี ฉันจำได้ว่าเมื่อหลายปีก่อน SOAP เป็นที่นิยมมาก (ทันสมัย?) และรายการ 'SOAP' จะต้องมีอยู่ในประวัติย่อที่ดีทุกรายการ แต่ในทางปฏิบัติมีการใช้น้อยมากและเพื่อให้บรรลุวัตถุประสงค์ที่เรียบง่าย สำหรับฉันแล้วดูเหมือนว่า REST เป็น 'คำสุดท้ายของแฟชั่น' อีกคำหนึ่ง (หรือฉันคิดผิดทั้งหมดเพราะฉันไม่เคยเห็น REST ในทางปฏิบัติ) คุณช่วยยกตัวอย่างให้ฉันได้ไหมว่าควรใช้ REST และทำไมเราไม่สามารถทำแบบเดียวกันได้หากไม่มี REST (หรือทำไมเราควรใช้เวลามากขึ้นในการทำสิ่งเดียวกันโดยไม่มี REST) UPD : โชคไม่ดีที่ฉันไม่เห็นข้อโต้แย้งที่เป็นรูปธรรมใด ๆ ที่สามารถทำให้ฉันนึกถึงในความคิดเห็นแรก ทำให้ฉันคิดว่า …

1
วิธีเข้าถึงพารามิเตอร์ในเมธอด RESTful POST
วิธีการโพสต์ของฉันมีลักษณะดังนี้: @POST @Consumes({"application/json"}) @Path("create/") public void create(String param1, String param2){ System.out.println("param1 = " + param1); System.out.println("param2 = " + param2); } เมื่อฉันสร้าง Jersey Client ใน Netbeans วิธีที่เรียกวิธีการโพสต์จะมีลักษณะดังนี้: public void create(Object requestEntity){ webResource.path("create").type(MediaType.APPLICATION_JSON).post(requestEntity); } เมื่อทำการทดสอบนี้: @Test public void hello(){ String json = "{param1=\"hello\",param2=\"hello2\"}"; this.client.create(json); } ให้ผลลัพธ์ต่อไปนี้ในเซิร์ฟเวอร์: INFO: param1 = {param1="hello",param2="hello2"} INFO: …

4
ฉันจะดึงข้อมูลพารามิเตอร์การสืบค้นใน Spring Boot ได้อย่างไร
ฉันกำลังพัฒนาโครงการโดยใช้ Spring Boot ฉันเป็นผู้ควบคุมที่รับคำขอGET ขณะนี้ฉันยอมรับคำขอประเภท URL ต่อไปนี้: http: // localhost: 8888 / ผู้ใช้ / ข้อมูล / 002 แต่ฉันต้องการยอมรับคำขอโดยใช้พารามิเตอร์การค้นหา : http: // localhost: 8888 / ข้อมูลผู้ใช้ = 002 นี่คือรหัสของคอนโทรลเลอร์ของฉัน: @RequestMapping(value="/data/{itemid}", method = RequestMethod.GET) public @ResponseBody item getitem(@PathVariable("itemid") String itemid) { item i = itemDao.findOne(itemid); String itemname = i.getItemname(); String price = …
123 java  rest  spring-boot 

3
การรับรองความถูกต้องโดยใช้โทเค็น REST API
ฉันกำลังพัฒนา REST API ที่ต้องมีการพิสูจน์ตัวตน เนื่องจากการพิสูจน์ตัวตนเกิดขึ้นผ่านบริการเว็บภายนอกผ่าน HTTP ฉันจึงให้เหตุผลว่าเราจะแจกจ่ายโทเค็นเพื่อหลีกเลี่ยงการเรียกใช้บริการการตรวจสอบสิทธิ์ซ้ำ ๆ ซึ่งนำฉันไปสู่คำถามแรกของฉันอย่างเรียบร้อย: สิ่งนี้ดีไปกว่าการกำหนดให้ไคลเอนต์ใช้ HTTP Basic Auth ในแต่ละคำขอและแคชการโทรไปยังฝั่งเซิร์ฟเวอร์ของบริการตรวจสอบความถูกต้องหรือไม่? โซลูชันการตรวจสอบสิทธิ์ขั้นพื้นฐานมีข้อดีตรงที่ไม่ต้องใช้การเดินทางไปกลับแบบเต็มรูปแบบไปยังเซิร์ฟเวอร์ก่อนที่คำขอเนื้อหาจะเริ่มได้ โทเค็นอาจมีความยืดหยุ่นในขอบเขตมากขึ้น (เช่นให้สิทธิ์เฉพาะทรัพยากรหรือการกระทำบางอย่างเท่านั้น) แต่ดูเหมือนว่าเหมาะสมกับบริบท OAuth มากกว่ากรณีการใช้งานที่ง่ายกว่าของฉัน ปัจจุบันโทเค็นได้รับในลักษณะนี้: curl -X POST localhost/token --data "api_key=81169d80... &verifier=2f5ae51a... &timestamp=1234567 &user=foo &pass=bar" api_key, timestampและverifierถูกต้องตามคำขอทั้งหมด "ตัวยืนยัน" ส่งคืนโดย: sha1(timestamp + api_key + shared_secret) ความตั้งใจของฉันคืออนุญาตให้โทรจากบุคคลที่รู้จักเท่านั้นและเพื่อป้องกันไม่ให้มีการโทรซ้ำแบบคำต่อคำ ดีพอหรือยัง? Underkill? Overkill? ด้วยโทเค็นในมือลูกค้าสามารถรับทรัพยากร: curl localhost/posts?api_key=81169d80... &verifier=81169d80... &token=9fUyas64... &timestamp=1234567 …

7
วิธีที่น่าสนใจในการสร้างหลายรายการในคำขอเดียว
ฉันกำลังทำงานกับโปรแกรมเซิร์ฟเวอร์ไคลเอนต์ขนาดเล็กเพื่อรวบรวมคำสั่งซื้อ ฉันต้องการทำสิ่งนี้ด้วยวิธี "REST (ful)" สิ่งที่ฉันต้องการทำคือ: รวบรวมรายการสั่งซื้อทั้งหมด (ผลิตภัณฑ์และปริมาณ) และส่งคำสั่งซื้อทั้งหมดไปยังเซิร์ฟเวอร์ ในขณะนี้ฉันเห็นสองตัวเลือกในการดำเนินการนี้: ส่งแต่ละ orderline ไปยังเซิร์ฟเวอร์: POST qty และ product_id ที่จริงฉันไม่ต้องการทำเช่นนี้เพราะฉันต้องการ จำกัด จำนวนคำขอไปยังเซิร์ฟเวอร์ดังนั้นตัวเลือกที่ 2: รวบรวมรายการสั่งซื้อทั้งหมดและส่งไปยังเซิร์ฟเวอร์พร้อมกัน ฉันจะใช้ตัวเลือกที่ 2 ได้อย่างไร ฉันมีแนวคิดสองสามข้อคือ: ตัดคำสั่งซื้อทั้งหมดในออบเจ็กต์ JSON แล้วส่งไปยังเซิร์ฟเวอร์หรือใช้อาร์เรย์เพื่อโพสต์ลำดับเส้น เป็นความคิดที่ดีหรือแนวทางปฏิบัติที่ดีในการนำตัวเลือกที่ 2 ไปใช้และถ้าเป็นเช่นนั้นฉันควรทำอย่างไร การปฏิบัติที่ดีคืออะไร?
122 rest  post 

6
ออกแบบ / เข้าสู่ระบบหรือ / ลงทะเบียนทรัพยากรอย่างจริงจัง?
ฉันกำลังออกแบบเว็บแอปจากนั้นก็หยุดคิดว่าควรจะออกแบบ api ของฉันให้เป็นบริการเว็บที่น่าสนใจ สำหรับตอนนี้ URI ส่วนใหญ่ของฉันเป็นแบบทั่วไปและอาจใช้กับเว็บแอปต่างๆ: GET /logout // destroys session and redirects to / GET /login // gets the webpage that has the login form POST /login // authenticates credentials against database and either redirects home with a new session or redirects back to /login GET /register // gets …

9
จะจัดการการกำหนดเวอร์ชัน REST API ด้วยสปริงได้อย่างไร
ฉันค้นหาวิธีจัดการเวอร์ชัน REST API โดยใช้ Spring 3.2.x แต่ฉันไม่พบสิ่งที่ดูแลรักษาง่าย ฉันจะอธิบายปัญหาที่ฉันมีก่อนจากนั้นวิธีแก้ปัญหา ... แต่ฉันสงสัยว่าฉันกำลังประดิษฐ์วงล้อขึ้นมาใหม่ที่นี่ ฉันต้องการจัดการเวอร์ชันโดยใช้ส่วนหัว Accept และตัวอย่างเช่นหากคำขอมีส่วนหัว Accept application/vnd.company.app-1.1+jsonฉันต้องการให้ MVC ส่งต่อไปยังวิธีการที่จัดการเวอร์ชันนี้ และเนื่องจากไม่ใช่วิธีการทั้งหมดใน API ที่เปลี่ยนแปลงในรุ่นเดียวกันฉันจึงไม่ต้องการไปที่คอนโทรลเลอร์แต่ละตัวของฉันและเปลี่ยนแปลงอะไรสำหรับตัวจัดการที่ไม่มีการเปลี่ยนแปลงระหว่างเวอร์ชัน ฉันไม่ต้องการให้ตรรกะในการคิดว่าจะใช้เวอร์ชันใดในคอนโทรลเลอร์ด้วยตัวเอง (โดยใช้ตัวระบุตำแหน่งบริการ) เนื่องจาก Spring กำลังค้นพบวิธีการเรียกใช้แล้ว ดังนั้นจึงใช้ API ที่มีเวอร์ชัน 1.0 ถึง 1.8 ซึ่งมีการแนะนำตัวจัดการในเวอร์ชัน 1.0 และแก้ไขใน v1.7 ฉันต้องการจัดการสิ่งนี้ด้วยวิธีต่อไปนี้ ลองนึกภาพว่าโค้ดนั้นอยู่ในคอนโทรลเลอร์และมีโค้ดบางตัวที่สามารถแยกเวอร์ชันออกจากส่วนหัวได้ (ต่อไปนี้ไม่ถูกต้องในฤดูใบไม้ผลิ) @RequestMapping(...) @VersionRange(1.0,1.6) @ResponseBody public Object method1() { // so something return object; …

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