| 구성 요소 | 설명 |
|---|---|
| 자원(Resource) | URI로 표현되는 대상 (예: /users, /posts) |
| 행위(Method) | HTTP 메서드 (GET, POST, PUT, DELETE 등) |
| 표현(Representation) | JSON, XML 등의 데이터 표현 방식 |
| 유형 | 설명 |
|---|---|
| Private API | 내부 시스템 간 통신용 API |
| Public API | 외부 서비스 제공용 API (예: 공공데이터, 날씨, 네이버 등) |
/로 표현_) 금지, 하이픈(-) 사용 가능| 기능 | URI | 메서드 |
|---|---|---|
| 게시글 목록 조회 | /boards | GET |
| 게시글 등록 | /boards | POST |
| 게시글 단건 조회 | /boards/{id} | GET |
| 게시글 수정 | /boards/{id} | PUT |
| 게시글 삭제 | /boards/{id} | DELETE |
REST의 제약 조건을 잘 지킨 API 디자인
| 어노테이션 | 설명 |
|---|---|
@RestController | @Controller + @ResponseBody, JSON 응답 |
@RequestBody | 요청 본문을 객체로 매핑 |
@PathVariable | URI 경로 일부를 변수로 추출 |
@GetMapping, @PostMapping, @PutMapping, @DeleteMapping | HTTP 메서드 축약 |
@ResponseBody | 메서드 반환 값을 HTTP 본문에 포함 |
@GetMapping("/user/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
User user = userService.findById(id);
return ResponseEntity.ok(user); // 200 OK
}
.ok(body): 200 OK
.created(uri): 201 Created
.badRequest(): 400 Bad Request
.status(HttpStatus.X): 커스텀 응답