簡體   English   中英

在服務中獲取PathVariables,RequestParams,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.

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