בדרכון זה, ניצור שירות אינטרנט RESTful פשוט באמצעות Spring Boot ו-Gradle. Spring Boot מקל על יצירת יישומים מבוססי Spring באופן עצמאי, ברמה של ייצור, ו-Gradle הוא כלי בנייה עוצמתי המפשט את תהליך הבנייה.
מה זה REST?
REST, המסומן כ-Representational State Transfer, הוא קבוצה של עקרונות ארכיטקטוניים המבטיחים שה-APIs שלך יהיו משתלבים, מתקדמים וניתנים לתחזוקה. דמיין בניית קוביות לגו – יישומים שונים יכולים לתקשר באופן חלקלק עם ה-API שלך, כל עוד הם מקבלים את ההנחיות ה-RESTful, בדיוק כמו שקוביות לגו נכנסות יחד מבלי להתחשב בקבוצה שלהן.
מה זה Spring Boot?
Spring Boot הוא מסגרת עוצמתית המפשטת את תהליך הפיתוח. תחשוב על זה כעל ערכת כלים מוכנים, מלאה ברכיבים ותכונות, שחוסכת לך זמן ומאמצים בהקמת תשתית היישום שלך. אתה יכול להתמקד בבניית הלוגיקה המרכזית של ה-API שלך מבלי להתעכב על קוד דוגמני.
מוכן לשחרר את פנימיית המפתח שלך? המדריך הזה יחולל בך את היכולות ליצור את היישום הראשון שלך ב-Spring Boot REST באמצעות Gradle, כלי בנייה פופולרי. בין אם אתה מתכנת זכרון מנוסה או רק מתחיל את החקירה שלך, המסע הצעד-אחר-צעד הזה יכין אותך עם הידע הבסיסי לבניית שירותי אינטרנט דינאמיים ואינטראקטיביים.
מהלכים מרכזיים
- צור APIs רשתיים באמצעות Spring Boot: Spring Boot הוא פרויקט זהות ב-Java המקל על תהליך הפיתוח של APIs רשתיים. הוא מספק מגוון רחב של תכונות מיושרות מלכתחילה, כמו התאמה אוטומטית והתקציבה של הסמכויות, מה שיכול לחסוך לך זמן ומאמץ.
- הבין את המושגים המרכזיים של APIs רשתיים: REST מסמל שיתוף מצב ייצוגי. זהו סט של עקרונות ארכיטקטוריים המבטיח שה-APIs שלך יהיו משתתפים, נצילים וניתנים לתחזוקה. חלק מהמושגים המרכזיים של APIs רשתיים כוללים ייצוג משאב, שיטות HTTP וסטטוסים.
- יישום פעולות CRUD בסיסיות: CRUD מסמל יצירה, קריאה, עדכון ומחיקה. אלו הן הפעולות הבסיסיות שתצטרך ליישם בנקודות המפתח של ה-API שלך כדי לאפשר למשתמשים לתקשר עם הנתונים שלך.
- בדוק את ה-API שלך באופן מקיף: חשוב לבדוק את ה-API שלך באופן מקיף לפני שתפרוס אותו לייצור. זה יעזור לך להבטיח שהוא פועל כצפוי ושאין באגים.
- התעמק בתכונות מתקדמות: ככל שתתארגן יותר עם Spring Boot ו-APIs רשתיים, תוכל להתעמק בתכונות מתקדמות נוספות, כגון ניהול נתונים, אבטחה ואימות.
על ידי שילוב הכוח של REST עם הגישה המיושרת של Spring Boot, תוכל ליצור APIs יעילים ונוחים לשימוש שיכולים לשתף באופן חלקלק עם אפליקציות אחרות. אז, האם אתה מוכן לשחרר את הפוטנציאל של APIs רשתיים עם Spring Boot ו-Gradle? בואו נתחיל!
הכרחיות
- תיקון Java Development Kit (JDK) 11 מותקן
- גרדל הגרסה העדכנית ביותר מותקן
- הבנה בסיסית של מושגים Java ו-Spring
שלב 1: הקמת הפרויקט
כדי להתחיל עם הפרויקט עלינו לבצע את 3 הצעדים הבאים.
- פתח שיחת מסמכים או פקודת פקודה
- צור תיקייה חדשה לפרויקט שלך
- נווט לתיקיית הפרויקט
- התחל מבנה פרויקט ספרינג בוט בסיסי
mkdir spring-boot-rest-gradle
cd spring-boot-rest-gradle
gradle init --type spring-boot
שלב 2: צור פרויקט ספרינג בוט
אנא ערוך את קובץ build.gradle הקיים במדריך עם התוכן הבא.
plugins {
id 'org.springframework.boot' version '2.6.3'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.example'
version = '1.0-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}
זה מקמם פרויקט ספרינג בוט בסיסי עם הסמכויות ההכרחיות.
שלב 3: צור קונטרולר REST
צור קובץ חדש בשם HelloController.java במדריך src/main/java/com/example עם התוכן הבא:
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/api")
public class HelloController {
private final List<String> messages = new ArrayList<>();
@GetMapping("/hello")
public String sayHello() {
return "Hello, Spring Boot!";
}
@GetMapping("/messages")
public List<String> getMessages() {
return messages;
}
@PostMapping("/messages")
public String addMessage(@RequestBody String message) {
messages.add(message);
return "Message added: " + message;
}
@PutMapping("/messages/{index}")
public String updateMessage(@PathVariable int index, @RequestBody String updatedMessage) {
if (index < messages.size()) {
messages.set(index, updatedMessage);
return "Message updated at index " + index + ": " + updatedMessage;
} else {
return "Invalid index";
}
}
@DeleteMapping("/messages/{index}")
public String deleteMessage(@PathVariable int index) {
if (index < messages.size()) {
String removedMessage = messages.remove(index);
return "Message removed at index " + index + ": " + removedMessage;
} else {
return "Invalid index";
}
}
}
זה מגדיר קונטרולר REST עם נקודות קצה לפעולות GET, POST, PUT ו-DELETE על רשימה פשוטה של הודעות.
שלב 4: הפעל את היישום
פתח שיחת מסמכים או פקודת פקודה והפעל את הפקודה הבאה:
./gradlew bootRun
בקר ב-http://localhost:8080/api/hello בדפדוף שלך כדי לבדוק את הנקודת התחלה הראשונית. אפשר להשתמש בכלי כמו curl, Postman, או כל �לקוח REST לבדוק את הנקודות האחרות.
שלב 5: כתוב קריאות בודק
צור קובץ חדש בשם HelloControllerTest.java בספריית src/test/java/com/example עם התוכן הבא:
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.BeforeEach;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is;
@SpringBootTest
@AutoConfigureMockMvc
public class HelloControllerTest {
@Autowired
private MockMvc mockMvc;
@BeforeEach
public void setUp() {
// נקה הודעות לפני כל בדיקה
// זה מבטיח מצב נקי לכל בדיקה
// או שאפשר להשתמש במסד נתונים של בדיקות או בנתונים מונפקים
// תלוי בדרישות שלך
HelloController messagesController = new HelloController();
messagesController.getMessages().clear();
}
@Test
public void testSayHello() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/api/hello"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().string("Hello, Spring Boot!"));
}
@Test
public void testGetMessages() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/api/messages"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.jsonPath("$", hasSize(0)));
}
@Test
public void testAddMessage() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.post("/api/messages")
.contentType(MediaType.APPLICATION_JSON)
.content("\"Test Message\""))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().string("Message added: Test Message"));
}
@Test
public void testUpdateMessage() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.post("/api/messages")
.contentType(MediaType.APPLICATION_JSON)
.content("\"Initial Message\""));
mockMvc.perform(MockMvcRequestBuilders.put("/api/messages/0")
.contentType(MediaType.APPLICATION_JSON)
.content("\"Updated Message\""))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().string("Message updated at index 0: Updated Message"));
}
@Test
public void testDeleteMessage() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.post("/api/messages")
.contentType(MediaType.APPLICATION_JSON)
.content("\"Message to Delete\""));
mockMvc.perform(MockMvcRequestBuilders.delete("/api/messages/0"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().string("Message removed at index 0: Message to Delete"));
}
}
בדיקות אלו משתמשות בפונקציות הבדיקה של Spring Boot כדי לדמות בקשות HTTP ולאמת את ההתנהגות של רשת הREST של הבקר.
שלב 6: הרץ בדיקות
פתח שיחת מסוף או פקודת תיעוד והרץ את הפקודה הבאה כדי לבצע את הבדיקות:
./gradlew test
בדוק את תוצאות הבדיקה כדי לוודא שכל הבדיקות עוברות בהצלחה.
מסקנה
מזל טוב! ביצעת בהצלחה שירות אינטרנט RESTful בסיסי עם פעולות CRUD באמצעות Spring Boot ו-Gradle. הדרכה זו כיסתה את יישום סמסקים ל-GET, POST, PUT, ו-DELETE פעולות יחד עם בדיקות תואמות.
הערות נוספות:
- זו דוגמה בסיסית מאוד. אפשר להרחיב על פיה על ידי יצירת סמסקים נוספים, עיבוד שיטות HTTP שונות (POST, PUT, DELETE) והוספת פונקציונליות כמו ניהול נתונים.
- שקול להוסיף בדיקות יחידה עבור הבקר שלך באמצעות ממשקים כמו JUnit.
- אפשר להשתמש ב-Spring Initializr (https://start.spring.io/) כדי לייצר במהירות פרויקט עם תלבושות נוספות והתקנים.
למידה נוספת, תראה את המקורות האלה:
- מדריך התחלה של Spring Boot: https://spring.io/guides/gs/spring-boot/
- הדרכה לשירותים REST של Spring: https://spring.io/guides/gs/rest-service/
- בניית שירות אינטרנט REST עם Spring Boot Actuator: https://spring.io/guides/gs/actuator-service/
זכור, זו רק ההתחלה של המסע שלך עם Spring Boot! המשך לחקור ולבנות יישומים מדהימים.
Source:
https://dzone.com/articles/build-your-first-spring-boot-rest-application-with