REST API는 Representational State Transfer 원칙에 기반한 Application Programming Interface입니다. REST는 웹 서비스의 설계 방식 중 하나로, HTTP 프로토콜을 활용하여 클라이언트와 서버 간의 데이터를 교환합니다. REST API는 주로 웹 애플리케이션에서 사용되며, 효율적이고 확장 가능한 통신을 지원합니다.
Stateless (무상태성)
Resource 기반 설계
표준 HTTP 메서드 사용
HTTP 상태 코드 활용
200 OK
: 성공201 Created
: 리소스 생성 성공400 Bad Request
: 잘못된 요청404 Not Found
: 리소스를 찾을 수 없음500 Internal Server Error
: 서버 오류계층화된 시스템 구조
리소스 URI는 명사로 작성
/users
, /users/{id}
, /products/{id}
HTTP 메서드와 URI를 조합해 작업 표현
GET /users
: 모든 사용자 조회POST /users
: 새로운 사용자 생성PUT /users/1
: ID가 1인 사용자 전체 수정DELETE /users/1
: ID가 1인 사용자 삭제JSON 포맷 권장
Stateless 설계 유지
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping("/users")
public class UserController {
private Map<Integer, String> users = new HashMap<>();
// GET 요청: 모든 사용자 조회
@GetMapping
public Map<Integer, String> getAllUsers() {
return users;
}
// GET 요청: 특정 사용자 조회
@GetMapping("/{id}")
public String getUser(@PathVariable int id) {
return users.getOrDefault(id, "User not found");
}
// POST 요청: 사용자 생성
@PostMapping
public String createUser(@RequestParam String name) {
int id = users.size() + 1;
users.put(id, name);
return "User created with ID: " + id;
}
// PUT 요청: 사용자 수정
@PutMapping("/{id}")
public String updateUser(@PathVariable int id, @RequestParam String name) {
if (users.containsKey(id)) {
users.put(id, name);
return "User updated: " + name;
} else {
return "User not found";
}
}
// DELETE 요청: 사용자 삭제
@DeleteMapping("/{id}")
public String deleteUser(@PathVariable int id) {
if (users.containsKey(id)) {
users.remove(id);
return "User deleted";
} else {
return "User not found";
}
}
}
GET /users
요청:
curl -X GET http://localhost:8080/users
응답:
{}
POST /users
요청:
curl -X POST http://localhost:8080/users -d "name=John"
응답:
"User created with ID: 1"
GET /users/1
요청:
curl -X GET http://localhost:8080/users/1
응답:
"John"
PUT /users/1
요청:
curl -X PUT http://localhost:8080/users/1 -d "name=Jane"
응답:
"User updated: Jane"
DELETE /users/1
요청:
curl -X DELETE http://localhost:8080/users/1
응답:
"User deleted"
REST API는 현대 애플리케이션 개발에서 필수적이며, 클라이언트-서버 간의 통신을 단순하고 명확하게 만듭니다.
추가 학습 자료