[Spring] REST 통신으로 데이터 주고 받기(ft.Postman)

민지·2023년 5월 5일
0

Spring

목록 보기
2/3

기존방식

ModelAndView를 리턴하여 뷰를 넘기고 데이터를 주고받았다

RESTful API

HTTP 프로토콜을 기반으로 하여 네트워크 상에서 서로 다른 시스템 간에 상호작용하는 방법을 정의

REST?

Representational State Transfer.

하나의 URI하나의 고유한 리소스를 대표하도록 설계된다.
HTTP URI를 통해 제어할 자원(리소스)를 명시 +
HTTP Method(GET, POST, PUT, DELETE) 을 통해 해당 자원(리소스)을 제어하는 명령을 내리는 방식의 아키텍처

구성

  • 자원 - URI
  • 행위(동사) - HTTP Method
  • 표현

잘 표현된 HTTP URI: 리소스를 정의.
HTTP 메서드 : 리소스에 대한 행위를 정의. HTTP 요청의 Body에 데이터를 담아 전송하는 것이 일반적.
리소스 : JSON, XML과 같은 언어로 표현 가능

기존 Service와의 차이점

기존REST
view 전달JSON, XML형식의 data 전달
방식 자유REST 아키텍처 방식으로 요청

기존 웹 접근 방식과의 차이점

기존REST 방식
URIaction을 나타냄제어하려는 자원(리소스)를 나타냄

특징

  • 순수한 데이터를 전송한다
  • 기존의 GET/POST + PUT DELETE ⇒ CRUD 처리가 가능
  • 하이픈가능, 언더바사용 잘 안함. 대문자 잘 사용 안함
  • URI 마지막에 슬래시(/) X
  • 확장자가 포함된 파일 이름을 직접 포함 X
  • URI는 명사 사용

장점

  • 클라이언트와 서버가 독립적으로 개발될 수 있다.
  • 캐시를 이용한 효율적인 데이터 처리, 서버 부하 분산을 위한 로드 밸런싱, 멀티 플랫폼 지원이 가능하다.

How to modify

  1. 라이브러리 추가
<jackson-databind-version>2.13.5</jackson-databind-version>

<!-- JSON -->
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
	<dependency>
		<groupId>com.fasterxml.jackson.core</groupId>
		<artifactId>jackson-databind</artifactId>
		<version>${jackson-databind-version}</version>
	</dependency>
  1. REST 로 값을 넘긴다
    1-1. @ResponseBody
    1-2. 컨트롤러 자체를 @RestController 로 만든다.
  2. 잘 넘어갔는지 확인하기 위한 방법

POSTMAN

뷰없이도 rest api 데이터를 확인할 수 있다

활용 예시

회원가입 진행할때를 예를 들겠다
rest컨트롤러를 분리해 진행하였다.

<RestMemberController.java>

//회원가입
@PostMapping(value = "/join", headers = "content-type=application/json")
	public ResponseEntity<Map<String, Object>> join(@RequestBody MemberDto memberDto) {
		Map<String, Object> responseData = new HashMap<>();
		try {
			memberService.joinMember(memberDto);
			responseData.put("result", memberDto);
			responseData.put("message", "회원가입 성공!!");
		} catch (Exception e) {
			e.printStackTrace();
	        responseData.put("result", "error");
	        responseData.put("message", "회원 가입 중 문제 발생!!!");
	        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(responseData);
		}
		return ResponseEntity.ok(responseData);
	}

Map을 통해 json으로 데이터를 전송하면 postman에서 제대로 전달되었는지 확인할 수 있다.
json형태로 보낸다고 기재했으니 dto형식에 맞게 값을 넣어 보낸다.
값을 제대로 넣었다면, 성공했다는 메시지와 함께 Dto를 넘겼다.
sucess to join

not null이어야 하는 id값을 null값으로 보냈을 경우,
error 결과값과 함께 에러메시지를 보낸다.
fail to join

profile
개발의, 개발에 의한, 개발을 위한 기록장

0개의 댓글