41284

[code]

    @Controller
    @ResponseBody
    public class GetProjectInfoRestController {
    
        @RequestMapping(path = "/test/{opt}",
                method = RequestMethod.GET)
        public void test(HttpServletRequest request, @PathVariable("opt") String opt) {
    
            return;
        }
    }
    
[/code]

ブラウザで「<http://localhost:8080/test/aaa>」を実施すると  
「@PathVariable("opt") String opt」に「aaa」がはいることを確認できたのですが  
「<http://localhost:8080/test/aaa?bbb>」を実施すると  
「@PathVariable("opt") String opt」には「aaa」までしか入っていませんでした。  
「?」も含めて値を取得することは可能でしょうか？

また、request.getRequestURL().toString()でURLを取得してみても  
「<http://localhost:8080/test/aaa>」となっているようでした…


CC BY-SA 3.0
2018-01-29T05:25:06.670
41279
2018-01-29T06:35:03.943
12842
question
spring-boot
Springbootで「?」が含まれるURLを取得したい


@PathVariable はPathに含まれる指定したAliasの値しかとれませんので、クエリストリングを含めることができません。

たとえば <http://localhost:8080/test/aaa?bbb=value> というURLに含まれる bbbに対応する値を取得したい場合は

[code]

    @RequestParam("bbb") String bbb
    
[/code]

を引数に含めることで取得できると思います。

また、HttpServletRequest は以下のメソッドをもっています。

> HttpServletRequest#getRequestURL  
>  HttpServletRequest#getQueryString

2つのメソッドが返す値を "?" で連結することでリクエストで使用したURLが取得できると思います。  
本家サイトの方でHttpServletRequestについての質問があったので、参考にしてください。(回答はこちらも参考にしました)  
<https://stackoverflow.com/questions/2222238/httpservletrequest-to-complete-
url>


CC BY-SA 3.0
2018-01-29T06:29:38.253
41284
2018-01-29T06:35:03.943
2018-01-29T06:35:03.943
24823
24823
41279
answer