![](/img/trans.png)
[英]RestTemplate POST request RequestParams and RequestBody
[英]Get PathVariables, RequestParams , RequestBody in a service
我想從àspring服務組件中的httpRequest獲取所有參數(不需要標題)
我正在使用Spring boot,看這個例子:
private final MyService myService;
@RequestMapping(value = "/processform/{process_id}", method = RequestMethod.POST)
public @ResponseBody
LinkedHashMap<String, String> runForm( String process_id,
@RequestParam String className,
@RequestBody(required = false) IupicsFormVO vo) {
return myService.run(process_id, className, vo);
}
該控制器生成此curl(不包含標題):
curl -X POST \
'http://localhost:8087/processform/119?className=com.stackOverflow.question.ClassName.java' \
-d '{
"name" : "Name",
"age" : "Age"
}'
現在,我需要從此URL獲取所有參數(可能是注入HttpServletRequest
)
預期的結果是:
{
"process_id":"119",
"className":"com.stackOverflow.question.ClassName.java",
"body":{
"name":"Name",
"age":"Age"
}
}
我找到了這個例子
String finalPath = apm.extractPathWithinPattern(bestMatchPattern, path
但是當我使用它時,我總是會得到一個空的finalPath謝謝您的時間
您需要在路徑中放入變量以使用@PathVariable
。 例如:
@RequestMapping(value = "/processform/{id}", method = RequestMethod.POST)
public @ResponseBody
LinkedHashMap<String, String> runForm(@PathVariable("id") String process_id, ...
您的路徑應具有路徑變量占位符。 /processform/{process_id}
。 另外,您需要指定request parameter
@RequestMapping(value = "/processform/{process_id}", method = RequestMethod.POST)
public @ResponseBody
LinkedHashMap<String, String> runForm(HttpServletRequest request, @PathVariable("process_id") String process_id, @RequestParam("name") String lassName,@RequestParam("age") String age,
@RequestBody(required = false) IupicsFormVO vo) {
return myService.run(process_id, className, vo);
}
有關Path變量和Request參數的更多詳細信息,請查看本教程。
編輯:如果您想從請求中獲取這些屬性,則第一個參數將是控制器方法中的HttpServletRequest request
。 將request
參數傳遞給您的服務,然后您就可以使用request.getParameter("paramName")
和request.getAttribute("attributeName")
來訪問值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.