ModelAndView를 리턴하여 뷰를 넘기고 데이터를 주고받았다
HTTP 프로토콜을 기반으로 하여 네트워크 상에서 서로 다른 시스템 간에 상호작용하는 방법을 정의
Representational State Transfer.
하나의 URI는 하나의 고유한 리소스를 대표하도록 설계된다.
HTTP URI를 통해 제어할 자원(리소스)를 명시 +
HTTP Method(GET, POST, PUT, DELETE) 을 통해 해당 자원(리소스)을 제어하는 명령을 내리는 방식의아키텍처
잘 표현된 HTTP URI: 리소스를 정의.
HTTP 메서드 : 리소스에 대한 행위를 정의. HTTP 요청의 Body에 데이터를 담아 전송하는 것이 일반적.
리소스 : JSON, XML과 같은 언어로 표현 가능
기존 | REST |
---|---|
view 전달 | JSON, XML형식의 data 전달 |
방식 자유 | REST 아키텍처 방식으로 요청 |
기존 | REST 방식 | |
---|---|---|
URI | action을 나타냄 | 제어하려는 자원(리소스)를 나타냄 |
PUT
DELETE
⇒ CRUD 처리가 가능<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>
뷰없이도 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를 넘겼다.
not null이어야 하는 id값을 null값으로 보냈을 경우,
error 결과값과 함께 에러메시지를 보낸다.