Get을 GET하기

개발세발·2024년 1월 10일

GET

  • 리스소를 얻어오겠다. 읽어오겠다. 같은 요청은 같은 결과를 가지며, 데이터의 변화가 없다.
  • Path Variable을 가진다.

in Spring

@RestController//restapi처리하는 컨트롤러 지정
@RequestMapping("/api")//api로 시작하는 주소의 요청은 여기서 처리
public class RestAPIController {
    //클라이언트가 특정 요청을 보내주기 위해 서버의 진입점이 어떠한 주소를 가지는 지를 작성
    //어떠한 주소를 받겠다를 설정
    //응답을 내려줬고, 문자열로 전달을 했다. 0 또는 1이라는 비트 단위의 데이터로 전달한다.
    @GetMapping(path = "/hello")//hello라는 주소는 이 메소드가 처리하겠다.
    public  String hello(){
        var html = "<html> <body> <h1> Hello Spring-Boot </h1> </body> </html>";
        return html;
    }
  • @RestController 어노테이션으로 restapi를 처리하는 컨트롤러이다(클래스이다)지정.
  • @RequestMapping 어노테이션으로 특정 주소의 요청을 처리한다. ->"/api"로 들어가는 주소는 이 클래스에서 처리하겠다고 명시해줌.
  • @GetMapping으로 Get메소드를 지정하여 get 방식으로 처리하겠다 명시. 이후 (path="")로 특정 주소에 대한 요청을 처리하겠다 명시.

Path Variable

  • 주소 내에 정보를 전달하는 방법.
  • 특정 사용자나 특정 정보에 대한 취득 방법으로 Path Variable을 사용할 수 있다.
    ex) www.foo.bar/user-id/100
    www.foo.bar/user-id/100/card-id/200
    위 100, 200들은 변할 수 있는 값들로 path-variable이라고 함.
  • 보안에 대한 유의가 필요함.

in Spring

@GetMapping(path = "/echo/{message}/age/{age}/is-man/{isMan}") //pathvariable에서 메세지와 값이 다르면 안됨->(name = "message")를 통해 해결
    public String echo(
            @PathVariable(name = "message") String msg,
            @PathVariable int age,
            @PathVariable boolean isMan
    ){ //메세지에 해당하는 값들을 문자로 파싱

        System.out.println("echo message: "+msg);
        System.out.println("echo message: "+age);
        System.out.println("echo message: "+isMan);//서버에서 어떻게 전송되는지 보여줌
  • @GetMapping 어노테이션을 사용하고 중괄호를 사용하여 중괄호에 변수를 받을 것임을 명시
  • 매개변수에 @PathVariable 어노테이션을 사용하고 중괄호에 들어간 변수명과 동일하게 선언해준다.

Query Parameter

  • 특정 정보에 대한 필터링을 걸 때 사용한다.
    ?로 시작해서 여러 파라미터를 묶을 때는 &을 사용해준다.

in Spring

    @GetMapping(path = "/book")
    public void queryParam(
            //request 파라미터로 들어오는 것을 매칭시키겠다.
            @RequestParam String category,
            @RequestParam String issuedYear,
            @RequestParam (name="issued-month") String issuedMonth,
            @RequestParam String issued_day//snake케이스는 추천하지 않는다.
    ){
        System.out.println(category);
        System.out.println(issuedYear);
        System.out.println(issuedMonth);
        System.out.println(issued_day);

    }
    
     @GetMapping(path = "/book2") //주소와 변수의 값을 일치 시켜주어야 한다.
    public void queryParamDto(
            //request 파라미터로 들어오는 것을 매칭시키겠다.
            BookQueryParam bookQueryParam //아무런 어노테이션을 붙이지 않는다.
    ){
        System.out.println(bookQueryParam);

    }
  • @RequestParam 어노테이션을 사용해서 파라미터로 들어오는 것을 선언한 변수와 매칭시키겠다.

  • 객체를 받을 때는 어노테이션을 명시하지 않는다.

  • 파라미터에 들어갈 변수명과 동일한 매칭이 되지 않을 경우 자바에서는 '-'으로 변수를 선언할 수 없기 때문에 (name="issued-month")으로 지정해서 사용해줘야함.

    롬복(Lombok)

  • 어노테이션으로, 롬복을 사용하면 Getter, Setter, 생성자, toString() 등을 선언하지 않아도 자동으로 생성되어 사용할 수 있음.

  • 코드가 직접 눈에 보이는게 아니므로 직관성이 떨어질수 있습니다.

0개의 댓글