Spring GET 통신하기

Mr.BBaSSaKK·2021년 7월 29일
0

HttpMethod는 여러 종류가 있지만 주로 사용하는 것은 크게 GET/POST/PUT/DELETE 네 가지와 HEADER 메서드입니다.

  • GET
    GET 메서드는 특정 리소스의 표시를 요청합니다. GET을 사용하는 요청은 오직 데이터를 받기만 합니다.
  • POST
    POST 메서드는 특정 리소스에 엔티티를 제출할 때 쓰입니다. 이는 종종 서버의 상태의 변화나 부작용을 일으킵니다.
  • PUT
    PUT 메서드는 목적 리소스 모든 현재 표시를 요청 payload로 바꿉니다.
  • DELETE
    DELETE 메서드는 특정 리소스를 삭제합니다.
    +
  • HEAD
    HEAD 메서드는 GET 메서드의 요청과 동일한 응답을 요구하지만, 응답 본문을 포함하지 않습니다.

Spring Boot에서 Restful방식으로 통신하는 방법은 어렵지 않습니다. 처음으로 만든 프로젝트에 데이터베이스의 드라이버 정도 설정을 하고 나면 바로 Run 버튼을 눌러 실행할 수 있습니다.

하지만 실행을 완료했다고 하더라도 요청을 받을 컨테이너가 없다면 데이터 통신을 할 수 없습니다.
Rest API는 기본적으로 클라이언트에게 데이터를 요청받은 데이터를 제공하는 역할을 수행합니다.
따라서 조회/작성/수정/삭제(CRUD) 기능을 수행할 수 있어야 하고 이는 위의 HTTP 메서드와 매칭시켜 데이터베이스에 저장하거나 저장된 데이터를 삭제할 수 있습니다.

그 중에서 GET 메서드는 서버로부터 저장된 데이터를 조회하는 기능을 명세하는 메서드입니다.
GET은 POST와 함께 가장 대표적인 HttpMethod를인데 기본적으로 경로 뒤에 파라미터를 표시하지 않는 POST와 다르게 정보를 제공받을 디테일한 파라미터를 보거나 수정할 수 있습니다.
따라서 단순히 모두에게 공개되면 안되는 정보는 인증/인가나 다른 메서드를 통해서 허가된 사용자에 한해서 정보가 제공되어야 하며 도메인 뒤의 파라미터를 클라이언트가 수정하여 정보가 변경될 우려가 있는 경우에는 사용을 지양해야 합니다.

그럼 단순한 GET 메서드를 가진 이벤트를 작성하도록 해보겠습니다.

Spring Boot에서는 GetMapping 어노테이션을 사용해서 더 깔끔하게 명시를 할 수 있습니다. 마찬가지로 POST/PUT/DELETE 등 다양한 어노테이션을 제공합니다.

@RestController
RestApi를 제공하기 위해서는 기본적으로 RestController의 생성이 요구됩니다.
기존 MVC에서 사용하던 @Controller을 사용해도 되지만 rest 방식으로 데이터를 전달하기 위해
RestController의 사용이 권장됩니다.
더 자세한 컨트롤러의 차이에 대해서 알고 싶다면 하단의 페이지에서 간단하게 설명하고 있습니다.
[Spring] @Controller와 @RestController 차이
https://mangkyu.tistory.com/49

@RquestMapping
이 어노테이션을 사용해서 path를 설정하면 도메인의 뒤에 붙인 패스가 완성됩니다.
GetMapping도 마찬가지로 같은 기능을 가지고 있지만 더 가독성이 좋고 RequestMapping은
클래스 레벨에서 적용해서 공통 path를 설정하는 데 편의성을 가지고 있습니다.
따라서 상황에 맞게 HttpMethod를 사용할 수 있습니다.

이렇게 간단한 Controller를 작성하고 Run 버튼을 누르고 해당 주소로 가게 되면 작성한 데이터가
리스트의 형태로 전달된 것을 확인할 수 있습니다.


만약에 실행이 되지않는다면 데이터베이스 연동을 하지않았기 때문입니다.
그렇기 때문에 다음 시간에는 데이터베이스 연동과 JPA 도메인을 만들어 보도록 하겠습니다.

profile
개발하는 인문학자

0개의 댓글