Spring Boot는 Java 언어를 기반으로 한 오픈 소스 프레임워크로, 간단하고 빠르게 웹 애플리케이션을 개발할 수 있는 도구입니다. 이번 포스팅에서는 Spring Boot를 사용하여 RESTful API를 만드는 방법에 대해 알아보겠습니다. RESTful API는 Representational State Transfer의 약자로, 네트워크 상에서 자원을 주고받을 수 있는 아키텍처 스타일을 말합니다. RESTful API를 통해 클라이언트와 서버 간의 통신을 효율적으로 할 수 있습니다.
### 1. Spring Boot 프로젝트 생성
먼저 Spring Boot 프로젝트를 생성해야 합니다. 이를 위해서는 [Spring Initializr](https://start.spring.io/) 사이트를 방문하여 프로젝트의 기본 설정을 입력한 후 프로젝트를 다운로드 받습니다. Maven이나 Gradle과 같은 빌드 도구를 선택한 후, Spring Web 의존성을 추가하여 RESTful API를 개발할 수 있도록 설정합니다.
### 2. RESTful API 엔드포인트 작성
Spring Boot에서 RESTful API를 작성하기 위해서는 컨트롤러를 생성해야 합니다. 컨트롤러는 클라이언트로부터의 요청을 받아서 처리하는 역할을 합니다. 예를 들어, 다음과 같이 간단한 컨트롤러를 작성할 수 있습니다.
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
위의 코드에서 `@RestController`는 해당 클래스가 RESTful API를 처리하는 컨트롤러임을 나타내고, `@GetMapping(“/hello”)`은 `/hello` 엔드포인트에 대한 GET 요청을 처리하는 메서드를 정의한 것입니다.
### 3. 데이터베이스 연동
대부분의 RESTful API는 데이터베이스와 연동하여 동작합니다. Spring Boot에서는 JPA(Java Persistence API)나 Spring Data JPA를 사용하여 데이터베이스와 연동할 수 있습니다. 예를 들어, MySQL 데이터베이스와 연동하는 방법은 다음과 같습니다.
1. `pom.xml` 파일에 MySQL 드라이버 의존성을 추가합니다.
<pre class="wp-block-syntaxhighlighter-code">
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</pre>
2. `application.properties` 파일에 데이터베이스 설정을 추가합니다.
spring.datasource.url=jdbc:mysql://localhost:3306/db_example
spring.datasource.username=springuser
spring.datasource.password=ThePassword
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.ddl-auto=update
3. JPA 엔티티 클래스를 작성하고, Repository 인터페이스를 생성하여 데이터베이스와 상호작용합니다.
### 4. API 문서화
RESTful API를 개발할 때는 API의 명세와 사용 방법을 명확히 문서화해야 합니다. Swagger와 같은 도구를 사용하면 API 문서를 자동으로 생성할 수 있습니다. Spring Boot에서는 Swagger를 쉽게 연동하여 API 문서를 작성할 수 있습니다.
1. `pom.xml` 파일에 Swagger 의존성을 추가합니다.
<pre class="wp-block-syntaxhighlighter-code">
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
</pre>
2. `SwaggerConfig.java` 파일을 생성하여 Swagger 설정을 추가합니다.
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.demo"))
.paths(PathSelectors.any())
.build();
}
}
### 5. 보안 설정
RESTful API를 개발할 때는 보안을 고려해야 합니다. Spring Security를 사용하여 API에 인증 및 권한 부여를 적용할 수 있습니다. 예를 들어, JWT(JSON Web Token)를 사용하여 API 보안을 강화할 수 있습니다.
1. `pom.xml` 파일에 Spring Security 의존성을 추가합니다.
<pre class="wp-block-syntaxhighlighter-code">
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</pre>
2. `SecurityConfig.java` 파일을 생성하여 보안 설정을 추가합니다.
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/api/**").authenticated()
.and()
.httpBasic();
}
}
이렇게 Spring Boot를 사용하여 RESTful API를 만들어보았습니다. RESTful API를 개발할 때는 클라이언트 요청을 처리하는 컨트롤러 작성, 데이터베이스와의 연동, API 문서화, 보안 설정 등을 고려해야 합니다. Spring Boot를 활용하여 간편하게 RESTful API를 개발할 수 있으니, 여러분도 한 번 도전해보세요!