Я хочу получить все параметры (не нужны заголовки) из httpRequest в компоненте службы spring
Я использую 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 -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 Спасибо за ваше время
всегда получал пустую finalString
Уточните, пожалуйста, в чем проблема. Что вам нужно извлечь из пути? Если есть какие-то дополнительные параметры (с ?name=value) просто укажите их с @RequestParam




Вам нужно поместить переменную в путь, чтобы использовать @PathVariable. Например:
@RequestMapping(value = "/processform/{id}", method = RequestMethod.POST)
public @ResponseBody
LinkedHashMap<String, String> runForm(@PathVariable("id") String process_id, ...
это не шляпа, которую я хочу, контроллер работает нормально, я просто забыл его скопировать, я обновлю свой вопрос, но я хочу позже получить эту информацию из HTTPRequest
Ваш путь должен иметь заполнитель переменной пути. /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);
}
Для получения более подробной информации о Переменная пути и параметр запроса вы можете ознакомиться с этим руководством.
Обновлено:
Если вы хотите получить эти атрибуты из запроса, то первым параметром в вашем методе контроллера будет HttpServletRequest request. Передайте параметр request в свою службу, и там вы сможете использовать request.getParameter("paramName") и request.getAttribute("attributeName") для доступа к значениям.
это не шляпа, которую я хочу, контроллер работает нормально, я просто забыл его скопировать, я обновлю свой вопрос, но я хочу позже получить эту информацию из HTTPRequest
Почему ты не можешь его использовать? Просьба уточнить