SpringBoot 를 배워보자/6. 웹 개발

RESTful API 개발

_Blue_Sky_ 2024. 9. 29. 15:56
728x90
728x90

 

스프링 부트 RESTful API 개발: 상세 가이드

소개

스프링 부트는 자바 개발자들에게 빠르고 쉽게 마이크로서비스를 개발할 수 있는 강력한 도구를 제공합니다. 특히 RESTful API 개발에 있어서 스프링 부트는 그 진가를 발휘합니다. 이 글에서는 스프링 부트를 이용하여 RESTful API를 개발하는 과정을 상세하게 설명하고, 실제 개발에 필요한 다양한 기능과 팁을 제공합니다.

RESTful API란?

RESTful API는 Representational State Transfer의 약자로, HTTP 프로토콜을 기반으로 자원(Resource)을 주고받는 웹 서비스 아키텍처 스타일입니다. RESTful API는 다음과 같은 특징을 가지고 있습니다.

  • 자원(Resource): 모든 데이터는 자원으로 표현되며, 각 자원은 고유한 URI를 가집니다.
  • HTTP 메서드: HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 자원에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행합니다.
  • Stateless: 클라이언트 상태를 서버에서 유지하지 않고, 모든 요청에 필요한 정보를 함께 전달합니다.
  • 표현(Representation): 자원의 상태를 표현하는 다양한 형식(JSON, XML 등)을 사용합니다.

스프링 부트로 RESTful API 개발하기

1. 프로젝트 생성

스프링 이니셜라이저 (start.spring.io)를 이용하여 간편하게 스프링 부트 프로젝트를 생성할 수 있습니다. 필요한 의존성(Dependency)으로는 Spring Web, Lombok 등을 추가합니다.

2. 컨트롤러 작성

@RestController 어노테이션을 클래스에 추가하여 REST 컨트롤러로 만들고, @RequestMapping 어노테이션을 메서드에 추가하여 요청 URL을 매핑합니다.

@RestController
public class UserController {
    @GetMapping("/users")
    public List<User> getAllUsers() {
        // 사용자 목록 조회 로직
    }

    @PostMapping("/users")
    public User createUser(@RequestBody User user) {
        // 사용자 생성 로직
    }
}
 
728x90

3. 데이터 모델

@Entity 어노테이션을 사용하여 엔티티 클래스를 정의하고, JPA를 이용하여 데이터베이스와 매핑합니다.

@Entity
@Data
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String email;
}
 

4. 서비스 계층

비즈니스 로직을 처리하는 서비스 계층을 만들고, 컨트롤러에서 서비스를 호출합니다.

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public List<User> getAllUsers() {
        return userRepository.findAll();
    }

    public User createUser(User user) {
        return userRepository.save(user);
    }
}
 

5. 데이터베이스 설정

application.properties 파일에 데이터베이스 접속 정보를 설정합니다.

Properties
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=your_username
spring.datasource.password=your_password
 

6. 예외 처리

@ExceptionHandler 어노테이션을 사용하여 예외를 처리하고, 적절한 HTTP 상태 코드와 에러 메시지를 반환합니다.

@RestControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(UserNotFoundException.class)
    public ResponseEntity<String> handleUserNotFoundException(UserNotFoundException ex) {
        return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());
    }
}
 

추가 기능

  • 데이터 검증: @Valid 어노테이션과 Validation API를 사용하여 입력 데이터를 검증합니다.
  • 페이지네이션: PageRequest, Pageable 인터페이스를 사용하여 데이터를 페이지네이션합니다.
  • 정렬: Sort 인터페이스를 사용하여 데이터를 정렬합니다.
  • 필터링: Querydsl, Spring Data JPA Specification 등을 사용하여 데이터를 필터링합니다.
  • 보안: Spring Security를 사용하여 인증과 권한 관리를 구현합니다.
  • API 문서화: Swagger UI, Springdoc-openapi 등을 사용하여 API 문서를 자동 생성합니다.

결론

스프링 부트는 RESTful API 개발을 위한 강력한 도구입니다. 위에서 설명한 내용을 바탕으로 다양한 기능을 추가하고, 자신만의 RESTful API를 개발할 수 있습니다.

 

728x90
728x90

'SpringBoot 를 배워보자 > 6. 웹 개발' 카테고리의 다른 글

웹 소켓  (0) 2024.09.29
웹 템플릿 엔진  (0) 2024.09.29
HTML, Thymeleaf 등을 이용한 웹 페이지 개발  (0) 2024.09.29