ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • PathVariable과 ReqestParam
    spring/스프링 입문 주차 2024. 1. 18. 11:36


    Client 즉, 브라우저에서 서버로 HTTP 요청을 보낼 때 데이터를 함께 보낼 수 있다.
    - 서버에서는 이 데이터를 받아서 사용해야하는데, 데이터를 보내는 방식이 한 가지가 아니라
     여러가지가 있기 때문에 모든 방식에 대한 처리 방법을 학습해야한다.

    Path Variable 방식

    GET http://localhost:8080/hello/request/star/Robbie/age/95
    - 서버에 보내려는 데이터를 URL 경로에 추가할 수 있다.
    - /star/Robbie/age/95

    // [Request sample]
    // GET http://localhost:8080/hello/request/star/Robbie/age/95
    @GetMapping("/star/{name}/age/{age}")
    @ResponseBody
    public String helloRequestPath(@PathVariable String name, @PathVariable int age)
    {
        return String.format("Hello, @PathVariable.<br> name = %s, age = %d", name, age);
    }




    Request Param

    GET http://localhost:8080/hello/request/form/param?name=Robbie&age=95
    - 서버에 보내려는 데이터를 URL 경로 마지막에 ? 와 & 를 사용하여 추가할 수 있다.
    - ?name=Robbie&age=95
     - 'Robbie'와 '95' 데이터를 서버에 보내기 위해 URL 경로 마지막에 추가했다.

    // [Request sample]
    // GET http://localhost:8080/hello/request/form/param?name=Robbie&age=95
    @GetMapping("/form/param")
    @ResponseBody
    public String helloGetRequestParam(@RequestParam String name, @RequestParam int age) {
        return String.format("Hello, @RequestParam.<br> name = %s, age = %d", name, age);
    }

     

     



    form 태그 POST
    POST http://localhost:8080/hello/request/form/param

    <form method="POST" action="/hello/request/form/model">
      <div>
        이름: <input name="name" type="text">
      </div>
      <div>
        나이: <input name="age" type="text">
      </div>
      <button>전송</button>
    </form>

     

    - HTML의 form 태그를 사용하여 POST 방식으로 HTTP 요청을 보낼 수 있다.
    - 이때 해당 데이터는 HTTP Body에 name=Robbie&age=95 형태로 담겨져서 서버로 전달된다.

     

    // [Request sample]
    // POST http://localhost:8080/hello/request/form/param
    // Header
    //  Content type: application/x-www-form-urlencoded
    // Body
    //  name=Robbie&age=95
    @PostMapping("/form/param")
    @ResponseBody
    public String helloPostRequestParam(@RequestParam String name, @RequestParam int age) {
        return String.format("Hello, @RequestParam.<br> name = %s, age = %d", name, age);
    }

     

    - 해당 데이터를 받아오는 방법은 앞서 본 방법 처럼 @RequestParam 애너테이션을 사용하여 받아올 수 있다.

     

    // [Request sample]
    // GET http://localhost:8080/hello/request/form/param?name=Robbie&age=95
    @GetMapping("/form/param")
    @ResponseBody
    public String helloGetRequestParam(@RequestParam(required = false) String name, int age) {
        return String.format("Hello, @RequestParam.<br> name = %s, age = %d", name, age);
    }

     

    - @RequestParam은 생략이 가능하다.
    - @RequestParam(required = false)
     - 이렇게 required 옵션은 false로 설정하면 Client에서 전달받은 값들에서 해당 값이 포함되어 있지 않아도
     오류가 발생하지 않는다.
    - @PathVariable(required = false) 도 해당 옵션이 존재한다.
    - Client로 부터 값을 전달 받지 못한 해당 변수는 null로 초기화된다.

    'spring > 스프링 입문 주차' 카테고리의 다른 글

    JDBC란 무엇일까?  (0) 2024.01.18
    HTTP 데이터를 객체로 처리하는 방법  (0) 2024.01.18
    스프링에서 Jackson 형태로 반환하는 법  (0) 2024.01.18
    Controller 이해하기  (0) 2024.01.17
    스프링 MVC란?  (0) 2024.01.17
Designed by Tistory.