我想从à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"
}
}
我找到了this个示例
String finalPath = apm.extractPathWithinPattern(bestMatchPattern, path
但是当我使用它时,我总是会得到一个空的finalPath谢谢您的时间
答案 0 :(得分:0)
您需要在路径中放入变量才能使用@PathVariable
。例如:
@RequestMapping(value = "/processform/{id}", method = RequestMethod.POST)
public @ResponseBody
LinkedHashMap<String, String> runForm(@PathVariable("id") String process_id, ...
答案 1 :(得分:0)
您的路径应具有路径变量占位符。 /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 variable and Request parameter 的更多详细信息,请查看本教程。
编辑:
如果要从请求中获取这些属性,则控制器方法中的第一个参数为HttpServletRequest request
。将request
参数传递给您的服务,然后您就可以使用request.getParameter("paramName")
和request.getAttribute("attributeName")
来访问值。