Java 使用RequestMapping和FromURI字符串从浏览器进行http调用时的任意输入参数
我有以下电话:Java 使用RequestMapping和FromURI字符串从浏览器进行http调用时的任意输入参数,java,http,spring-boot,Java,Http,Spring Boot,我有以下电话: http://localhost:8080/report?name=HelloReport&download=true 如何在http请求末尾附加任意输入参数 我的代码: ... @RequestMapping(value = "/report", params = {"name", "download"}) public ResponseEntity<byte[]> report( @RequestParam(val
http://localhost:8080/report?name=HelloReport&download=true
如何在http请求末尾附加任意输入参数
我的代码:
...
@RequestMapping(value = "/report", params = {"name", "download"})
public ResponseEntity<byte[]> report(
@RequestParam(value = "name") String name,
@RequestParam(value = "download") boolean download) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("application/pdf"));
if (download) {
headers.setContentDispositionFormData("inline", name + ".pdf");
}
headers.setCacheControl("must-revalidate, post-check=0, pre-check=0");
//MultiValueMap<String, String> parameters = UriComponentsBuilder.fromUriString(request.getRequestURI()).build().getQueryParams();
...
。。。
@RequestMapping(value=“/report”,params={“name”,“download”})
公众反应报告(
@RequestParam(value=“name”)字符串名称,
@RequestParam(value=“download”)布尔值下载{
HttpHeaders=新的HttpHeaders();
headers.setContentType(MediaType.parseMediaType(“application/pdf”);
if(下载){
headers.setContentDispositionFormData(“内联”,name+“.pdf”);
}
headers.setCacheControl(“必须重新验证,后检查=0,前检查=0”);
//MultiValueMap parameters=UriComponentsBuilder.FromUristing(request.getRequestURI()).build().getQueryParams();
...
我想使用:
MultiValueMap<String, String> parameters = UriComponentsBuilder.fromUriString(request.getRequestURI()).build().getQueryParams();
MultiValueMap parameters=UriComponentsBuilder.fromUriString(request.getRequestURI()).build().getQueryParams();
新的http看起来怎么样
新的@RequestMapping and method report()看起来如何?您的Spring注释不允许使用任意查询参数。它可能会根据端点所需的缺失参数限制对端点的访问。但不会限制对额外参数的访问 基于这个方法,我现在可以使用这个查询来访问它
/report?name=test&download=false&myfoobar=21243hjof&blablablaba=beepboopbap
。Spring不在乎我添加了myfoobar
和blablaba
要访问所有内容,只需将HttpServletRequest
参数添加到方法签名中,顺序并不重要
@RequestMapping(value = "/report", params = {"name", "download"})
public ResponseEntity<byte[]> report(
HttpServletRequest request,
@RequestParam(value = "name") String name,
@RequestParam(value = "download") boolean download) {
或者您可以使用请求方法:
request.getParameter("myfoobar") // 21243hjof
或者以你为例,你可以这样做
MultiValueMap<String, String> parameters = UriComponentsBuilder.fromUriString("?"+request.getQueryString()).build().getQueryParams();
MultiValueMap parameters=UriComponentsBuilder.fromUriString(“?”+request.getQueryString()).build().getQueryParams();
您还可以使用
@RequestParam Map allRequestParams
获取所有参数
@RequestMapping(value = "/report", params = {"name", "download"})
public ResponseEntity<byte[]> report(
@RequestParam Map<String,String> allRequestParams,
@RequestParam(value = "name") String name,
@RequestParam(value = "download") boolean download) {
@RequestMapping(value=“/report”,params={“name”,“download”})
公众反应报告(
@RequestParam映射所有RequestParams,
@RequestParam(value=“name”)字符串名称,
@RequestParam(value=“download”)布尔值下载{
@RequestMapping(value = "/report", params = {"name", "download"})
public ResponseEntity<byte[]> report(
@RequestParam Map<String,String> allRequestParams,
@RequestParam(value = "name") String name,
@RequestParam(value = "download") boolean download) {