[英]Using a custom object instead of @FormParam as JAX-RS resource input
我有一個示例代碼:
@PUT
public String method(@FormParam("firstName") String firstName,
@FormParam("lastName") String lastName ) {
Person person = new Person(firstName, lastName);
// ...
}
我想停止使用@FormParams並使用Person代替:
@PUT
public String method(@Person person) {
// ...
}
最好的方法是什么?
我正在嘗試使用自定義BodyReader,但我必須在readFrom
方法中“手動”解析InputStream。
這是正確的方法嗎?如果是,將InputStream轉換為KEY => VALUE HashMap的最佳方法是什么?
有一個@BeanParam選項,請參閱:
https://jersey.java.net/documentation/latest/jaxrs-resources.html#d0e1905
您有兩種選擇:
person
參數。 在JAX-RS規范中,這稱為實體參數,REST方法中必須有一個這樣的參數,然后由注冊的實體提供者自動解碼。 Person
類,使其構造函數接收單個String作為參數,並接收構造函數中的解碼。 從這里提取:
通常,方法參數的Java類型可以:
是一種原始的類型; - 有一個接受單個String參數的構造函數;
有一個名為valueOf或fromString的靜態方法接受單個String參數(例如,參見Integer.valueOf(String)和java.util.UUID.fromString(String));
有一個javax.ws.rs.ext.ParamConverterProvider JAX-RS擴展SPI的注冊實現,它返回一個能夠為該類型進行“from string”轉換的javax.ws.rs.ext.ParamConverter實例。 要么
Be List,Set或SortedSet,其中T滿足上面的2或3。 生成的集合是只讀的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.