
Controller, RestController
반환 되는 객체와 비슷하게 응답 JSON데이터로 반환이 된다.
JavaScript Object Notation
데이터를 교환하는 데 사용한다. XML보다 가볍다. 읽고 이해하기가 쉽다.
"key":value 다양한 형태의 데이터 타입이 가능하다.
문자열, 숫자, Bollean, null, JSON객체, JSON 배열,
중첩 작성도 가능하다. JSON array도 가능하다.
public class UserDto {
Integer id;
String name;
String email;
List<String> specialties; //문자열이 저장된다.
// code
public UserDto(Integer id, String name, String email, List<String> specialties) {
this.id = id;
this.name = name;
this.email = email;
this.specialties = specialties;
}// 전체를 초기화 하는 생성자가 자동 생성된다 genrator
Hyper Text를 컴퓨터가 주고 받기 위한 규약, 컴퓨터 간의 데이터를 주고 받기 위해 약속이 필요하다.
IETF, W3C 등 국제 표준 단체에서 HTTP에 대한 표준을 정하여 배포한다.
HTTP 수행 행동의 종류를 명시
자원의 생성, 조회, 수정, 삭제, 일부 수정
HTTP Method를 사용하면 단일 URI로 다양한 행동을 정의 가능하다.
GET(자원의 조회)
POST(자원의 생성)
PUT(자원의 수정)
DELETE(자원의 삭제)
DB의 4가지 기본 동작
CRUD
CREATE(데이터 저장) - POST , READ(데이터 조회) - GET , UPDATE(데이터 수정) - PUT/ PATCH, DELETE(데이터 삭제) - DELETE
단일 URI로 다양한 행동을 정의 가능하다.
POST / post 로 호출을 하면 된다.
DELETE /post 등으로 동일한 url일 경우 선택적으로 호출이 된다.
아래의 코드처럼 간소화가 가능하다.
@GetMapping -> @PostMapping도 가능
public String getPost() {
return "GET /post";
}
다양한 포맷의 데이터 전송이 가능하다. JSON데이터 형식이 주로 사용된다.
postman에서 raw -> JSON 선택한다.
@RequestBody 형식의 데이터
public class PostDto {
Integer id;
String title;
String content;
String username;
}
@PostMapping
public String savePost (@RequestBody postDto postDto) {
System.out.println(postDto.getId());
System.out.println(postDto.getTitle());
System.out.println(postPto.getUsername());
return "POST /post";
}
postmapping이나 getmappint 둘 중에 하나 사용 가능하다.
http가 반영된 annotation을 사용하기 간소화된 mapping을 사용가능하다.
정보를 주고 받기 위한 방법/약속
사용 방법을 알아야 한다. API문서는 API를 사용하는 방법을 명세한 문서이다.
호출하는데 전혀 어려움이 없도록 상세하게 작성해야 한다.
샘플 요청을 하고 샘플 응답을 한다.
잘 작성될 수록 communication 비용이 줄어 든다.