簡體   English   中英

將HTTP DELETE請求實體主體映射到方法參數

[英]Mapping an HTTP DELETE request entity body to a method parameter

我正在使用JAX-RS構建REST API 在有角前端中,我正在HTTP請求(JSON格式)的主體中發送要刪除的對象。 現在,我需要一種映射此HTTP DELETE主體請求的方法,該請求包含需要刪除的對象到REST方法中的局部變量。 例如,在SPRING我通過使用@RequestBody注釋對象變量來做到這一點。
我正在查看oracle的javaEE7文檔,但是其中的示例確實很基本,並且不包含復雜的對象,我在其他地方找到的不同教程也都在簡單刪除請求的軌跡上,這些請求使用@PathParam映射了一個簡單的id。

也許在這個問題之前,我要問的第一個問題是在HTTP的請求正文中發送對象是否完全是一種好方法? 盡管沒有明確禁止,但我正在閱讀一些文章,將其指定為不好的做法。 這種方法的缺點是什么? 我記得在SPRING研究此方法時,我讀到某個地方,通過特制的用戶輸入可能會進行惡意攻擊(我使用的持久性框架是JPA,EclipseLink)。 將主鍵映射到一系列@Path變量,然后使用@PathParam映射它們會@PathParam嗎?

因此,總而言之,這是一個好方法嗎? 以及如何讀取HTTP請求正文中的對象? 一些指針將不勝感激!

與Spring MVC不同,JAX-RS不會為請求有效負載定義任何注釋。

JAX-RS方法略有不同:未使用任何@***Param批注進行批注的參數值是從請求實體主體映射的。 這樣的參數稱為實體參數


我應該問的第一個問題是,在HTTP的請求正文中發送對象是否完全是一種好方法?

請不要這樣做,因為這不應該是DELETE工作方式。

RFC 7231的引號下方找到該文檔,該文檔當前定義了HTTP / 1.1協議的語義和內容:

DELETE請求消息中的有效負載沒有定義的語義。 DELETE請求上發送有效內容主體可能會導致某些現有實現拒絕該請求。

為了實現互操作性,我建議您盡可能遵循標准。 而且,您絕對不應該要求發送任何有效負載來標識要刪除的資源。


它的主鍵長8個字段。

URI,它代表üniversal 方案資源 dentifier,是為了識別資源

由於您有一堆字段可以共同標識資源,因此建議您重新考慮應用程序設計。 例如,您可以引入某種獨特的價值來識別您的資源。 看看UUID

使用JAX-RS,您不需要@RequestBody之類的東西。

您可以簡單地將類添加為參數,並將其填充為請求正文。

在您看來,將數據傳遞到正文中是有道理的,但是您的URL看起來如何? 與REST一樣,您應該擁有可通過URL尋址的資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM