To create a REST API using Spring Boot and publish an article about it on Medium, here are the general steps to follow:
1. Initialize a Spring Boot Project
Step 1: Use Spring Initializr
Go to Spring Initializr.
Configure your project:
Project: Maven Project
Language: Java
Spring Boot: 3.3.x or a more recent stable version
Project Metadata: Fill in the group, artifact, and other necessary information
Dependencies: Add Spring Web, Spring Data JPA, and H2 Database (for an in-memory database)
Click “Generate” to download the project.
Step 2: Unzip and Import the Project
Unzip the downloaded ZIP file.
Import the project into your preferred IDE (Eclipse, IntelliJ IDEA, etc.).
2. Configure the Project
Step 3: Configure the H2 Database
In the application.properties file, add the following configurations for H2:
spring.h2.console.enabled=true spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password spring.jpa.database-platform=org.hibernate.dialect.H2Dialect spring.jpa.hibernate.ddl-auto=update
Step 4: Create the JPA Entity
Create an Article class representing an article:
package com.example.demo.model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class Article { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String title; private String content; // Getters and Setters }
Step 5: Create the JPA Repository
Create an ArticleRepository interface:
package com.example.demo.repository; import org.springframework.data.jpa.repository.JpaRepository; import com.example.demo.model.Article; public interface ArticleRepository extends JpaRepository<Article, Long> { }
3. Create Services and Controllers
Step 6: Create the Service
Create an ArticleService class:
package com.example.demo.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.example.demo.repository.ArticleRepository; import com.example.demo.model.Article; import java.util.List; @Service public class ArticleService { @Autowired private ArticleRepository articleRepository; public List<Article> getAllArticles() { return articleRepository.findAll(); } public Article getArticleById(Long id) { return articleRepository.findById(id).orElse(null); } public Article saveArticle(Article article) { return articleRepository.save(article); } public void deleteArticle(Long id) { articleRepository.deleteById(id); } }
Step 7: Create the Controller
Create an ArticleController class:
package com.example.demo.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import com.example.demo.service.ArticleService; import com.example.demo.model.Article; import java.util.List; @RestController @RequestMapping("/api/articles") public class ArticleController { @Autowired private ArticleService articleService; @GetMapping public List<Article> getAllArticles() { return articleService.getAllArticles(); } @GetMapping("/{id}") public Article getArticleById(@PathVariable Long id) { return articleService.getArticleById(id); } @PostMapping public Article createArticle(@RequestBody Article article) { return articleService.saveArticle(article); } @DeleteMapping("/{id}") public void deleteArticle(@PathVariable Long id) { articleService.deleteArticle(id); } }
**
4. Test the Application
**
Step 8: Run the Application
Run the main class of the project (annotated with @SpringBootApplication).
Access the H2 console via http://localhost:8080/h2-console and use the configured connection details to verify the data.
Step 9: Test the Endpoints
Use tools like Postman to test the endpoints:
- GET /api/articles: Retrieves all articles
- GET /api/articles/{id}: Retrieves an article by ID
- POST /api/articles: Creates a new article
- DELETE /api/articles/{id}: Deletes an article by ID