Spring 공부를 하던 중 남에게 설명을 잘할 수 있는 수준이 그 개념에 대해 정확히 이해하는 것 아닐까 라는 생각이 들었다.
생각해보면 막상 설명해보라하면 제대로 못하는 것 같아서 다시한번 개념을 찾아보고 내가 이해한 식대로 적어보는게 좋을 것 같아서 정리하면서 글을 써본다
RestAPI
RestAPI는 웹에서 데이터를 주고받는 방식 중 하나로 HTTP프로토콜을 사용해 클라이언트와 서버간에 데이터를 교환하는 구조다. 리소스를 URL로 식별하고 GET,POST,PUT,DELETE 같은 HTTP 메서드를 통해 리소스를 처리한다.(여기서 리소스를 URL로 식별한다는 뜻은 API에서 다루는 대상을 URL을 통해 구분하고 식별한다는 뜻이다.) 여기서 Restful API라는 단어도 있는데 이것은 Rest의 아키텍쳐 스타일을 정확하게 준수한 API라는 의미에서 사용된다
RestAPI 예시 코드
GET /users/{userId}
RestAPI 규칙
- 리소스 기반 설계: 리소스를 URL로 식별한다. 예: /users.
- HTTP 메서드 사용: GET, POST, PUT, PATCH, DELETE 메서드를 사용하여 리소스를 다룬다.
- 무상태성: 서버는 클라이언트의 상태를 저장하지 않는다.
- 일관된 URL 구조: URL은 일관되게 설계한다. 예: /users/{userId}. (동사를 사용하지 않는다)
- 표준 HTTP 상태 코드 사용: 응답에 적절한 상태 코드를 사용한다. 예: 200 OK, 404 Not Found.
@ResponseEntity.
@ResponseEntity는 Spring Framework에서 HTTP 응답을 커스터마이징할 수 있는 객체이다. 이 객체를 사용하면 응답 상태 코드(예: 200, 404, 500), 헤더, 그리고 본문(body)까지 직접 제어할 수 있다. 간략하게 설명하면 @ResponseEntity는 서버가 클라이언트에게 상태 코드, 헤더, 본문을 포함한 응답 전체를 제어하여 반환할 수 있게 하는 객체이다. 이를 통해 더 세밀하게 HTTP 응답을 구성할 수 있다.
@RestController
@RequestMapping("/users")
public class UserController {
private final UserService userService; // 사용자 정보를 가져오는 서비스
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/{userId}")
public ResponseEntity<?> getUserById(@PathVariable String userId) {
User user = userService.findById(userId); // 사용자 정보 조회
if (user != null) {
return new ResponseEntity<>(user, HttpStatus.OK); // 사용자 정보와 200 OK 반환
} else {
return new ResponseEntity<>(HttpStatus.NOT_FOUND); // 404 Not Found 반환
}
}
}
위의 if문의 조건에 따라 http 응답을 구체적으로 정의할 수 있다(개발자 스스로 정의 가능)
'Back-End > Spring' 카테고리의 다른 글
[Spring security] 중복 로그인 방지 기능 만들다가 마주친 Maximum sessions of 1 for this principal exceeded 오류 + 리스너 개념 (0) | 2024.09.11 |
---|---|
[Spring Security] spring security 에서 CSRF 작동시키는 이유 (2) | 2024.09.09 |
[Spring] @Autowired 와 @RequiredArgsConstructor (1) | 2024.09.06 |
[Spring] 의존성 주입이란? (1) | 2024.09.06 |