ถ้าคุณเป็นนักพัฒนา Java คุณอาจเคยได้ยินเกี่ยวกับ Spring REST และ Spring Boot แต่ความแตกต่างระหว่างทั้งสองคืออะไร? และคุณควรใช้ตัวเลือกใดเมื่อไหร่? ในบล็อกโพสต์นี้ เราจะเจาะลึกคำถามเหล่านี้และอื่นๆ อีกมากมาย ดังนั้น มาเริ่มกันเลย!
บทนำสู่ Spring REST
Spring REST หรือ Spring MVC REST เป็นส่วนหนึ่งของ Spring Framework ที่ช่วยให้เราสร้างบริการเว็บ RESTful ได้ มันเกี่ยวกับการจัดการคำขอและการตอบสนอง HTTP และเป็นเครื่องมือที่ยอดเยี่ยมสำหรับการสร้าง API
Spring REST สร้างขึ้นบน Spring MVC (Model-View-Controller) framework และใช้เพื่อสร้างบริการเว็บ RESTful มันใช้สถาปัตยกรรม Spring MVC เพื่อเปิดเผยทรัพยากร HTTP ที่ขับเคลื่อนด้วยไฮเปอร์มีเดีย
ทำไมต้องใช้ Spring REST?
Spring REST ยอมรับหลักการของเว็บ รวมถึงสถาปัตยกรรม ประโยชน์ และอื่นๆ อีกมากมาย มันมีชุดคุณสมบัติต่างๆ เช่น การดำเนินการที่เหมาะสม (GET, POST, PUT, DELETE), การแคช, การเปลี่ยนเส้นทางและการส่งต่อ, ความปลอดภัย (การเข้ารหัสและการตรวจสอบสิทธิ์
เริ่มต้นใช้งาน Spring REST
คุณสามารถเริ่มต้นด้วยการสร้างบริการเงินเดือนอย่างง่ายที่จัดการพนักงานของบริษัท คุณจะจัดเก็บวัตถุพนักงานในฐานข้อมูลและเข้าถึงผ่านสิ่งที่เรียกว่า JPA คุณสามารถใช้ Spring Boot สำหรับตัวอย่างนี้ได้ แต่ Spring แบบคลาสสิกก็จะใช้งานได้ดีเช่นกัน
Spring Data REST Spring Data REST สร้างขึ้นบนโปรเจกต์ Spring Data และทำให้ง่ายต่อการสร้างบริการเว็บ REST ที่ขับเคลื่อนด้วยไฮเปอร์มีเดียที่เชื่อมต่อกับที่เก็บ Spring Data
Advanced Areas of REST หลังจากทำความเข้าใจพื้นฐานแล้ว คุณสามารถเจาะลึกพื้นที่ขั้นสูงของ REST เช่น การจัดการข้อผิดพลาด การแบ่งหน้า การทดสอบ และการจัดทำเอกสาร API
Spring REST Clients Spring REST มีไคลเอนต์ที่แตกต่างกัน รวมถึง RestClient, RestTemplate และ WebClient
ทำความเข้าใจ Spring Boot
ในทางกลับกัน Spring Boot เป็นเฟรมเวิร์กที่ออกแบบมาเพื่อลดความซับซ้อนในการบูตและพัฒนาแอปพลิเคชัน Spring มันมีค่าเริ่มต้นสำหรับการกำหนดค่าโค้ดและคำอธิบายประกอบเพื่อเริ่มต้นโปรเจกต์ Spring ใหม่ได้อย่างรวดเร็ว
Spring Boot เป็นเครื่องมือที่ทำให้การพัฒนาเว็บแอปพลิเคชันและไมโครเซอร์วิสด้วย Spring Framework ทำได้เร็วขึ้นและง่ายขึ้น มันเป็นส่วนขยายแบบ convention-over-configuration สำหรับแพลตฟอร์ม Spring Java ที่มีจุดประสงค์เพื่อช่วยลดความกังวลในการกำหนดค่าในขณะที่สร้างแอปพลิเคชันที่ใช้ Spring

ทำไมต้องใช้ Spring Boot?
Spring Boot มีความสามารถหลักสามประการ:
- Autoconfiguration: Spring Boot เริ่มต้นแอปพลิเคชันด้วยการพึ่งพาที่ตั้งไว้ล่วงหน้า เพื่อที่คุณจะไม่ต้องกำหนดค่าด้วยตนเอง
- Opinionated Approach to Configuration: Spring Boot มีความสามารถในการกำหนดค่าอัตโนมัติในตัว ซึ่งจะกำหนดค่า Spring Framework และแพ็คเกจของบุคคลที่สามโดยอัตโนมัติตามการตั้งค่าของคุณ
- Ability to Create Stand-Alone Applications: Spring Boot ช่วยให้คุณสร้างแอปพลิเคชันที่สามารถ "ทำงานได้เลย" ซึ่งหมายความว่าเป็นแบบสแตนด์อโลนและไม่ต้องการเซิร์ฟเวอร์ภายนอก
เริ่มต้นใช้งาน Spring Boot
คุณสามารถเริ่มต้นด้วยการสร้างแอปพลิเคชันง่ายๆ โดยใช้ Spring Initializr
ในการเริ่มต้นใช้งาน Spring Boot ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Java เวอร์ชันที่ถูกต้องแล้ว คุณสามารถตรวจสอบได้โดยการเรียกใช้ java -version
ในเทอร์มินัลของคุณ เยี่ยมชม Spring Initializr กรอกรายละเอียดโปรเจกต์ของคุณ เลือกตัวเลือกของคุณ และดาวน์โหลดโปรเจกต์ที่รวมเป็นไฟล์ zip
Step 1: Initiate a new Spring Boot project: ไปที่ start.spring.io เพื่อสร้างโปรเจกต์ด้วยเฟรมเวิร์ก "web" ในส่วน "Dependencies" ให้มองหาและรวมการพึ่งพา "web" ตามที่แสดงในภาพที่ให้ไว้ คลิกที่ปุ่ม "Generate" ดาวน์โหลดไฟล์ zip และแตกไฟล์ลงในไดเรกทอรีบนเครื่องของคุณ

Step 2: Incorporate your codeเปิด IDE ของคุณและไปที่ไฟล์ DemoApplication.java ที่อยู่ในไดเรกทอรี src/main/java/com/example/demo ของโปรเจกต์ของคุณ แก้ไขเนื้อหาของไฟล์โดยเพิ่มเมธอดและคำอธิบายประกอบเพิ่มเติมตามที่แสดงในโค้ดด้านล่าง คุณสามารถพิมพ์ออกมาหรือเพียงแค่คัดลอกและวางโค้ด
COPYpackage com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@GetMapping("/hello")
public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
return String.format("Hello %s!", name);
}
}
นี่คือโค้ดเดียวที่จำเป็นในการสร้างบริการเว็บ "Hello World" พื้นฐานใน Spring Boot
เมธอด hello() ที่เราได้รวมไว้ได้รับการออกแบบมาเพื่อยอมรับพารามิเตอร์ String ที่ชื่อว่า 'name' จากนั้นรวมพารามิเตอร์นี้กับคำว่า "Hello" ในโค้ด ซึ่งหมายความว่าหากคุณตั้งชื่อของคุณเป็น "Amy" ในคำขอ การตอบสนองจะเป็น "Hello Amy"
คำอธิบายประกอบ @RestController แจ้งให้ Spring ทราบว่าโค้ดนี้แสดงถึงจุดสิ้นสุดที่ควรเข้าถึงได้ผ่านเว็บ คำอธิบายประกอบ @GetMapping("/hello") สั่งให้ Spring ใช้เมธอด hello() ของเราเพื่อตอบสนองต่อคำขอที่ส่งไปยังที่อยู่ http://localhost:8080/hello สุดท้าย @RequestParam กำลังสั่งให้ Spring คาดหวังค่า 'name' ในคำขอ แต่ถ้าไม่มีค่าเริ่มต้นจะเป็นคำว่า "World"
Step 3: Test it: ถึงเวลาสร้างและเรียกใช้โปรแกรม เปิดบรรทัดคำสั่ง (หรือเทอร์มินัล) ไปที่ไดเรกทอรีที่มีไฟล์โปรเจกต์ของคุณ แอปพลิเคชันสามารถสร้างและเรียกใช้ได้โดยการเรียกใช้คำสั่งต่อไปนี้:
MacOS/Linux:
COPY./gradlew bootRun
Windows:
COPY.\gradlew.bat bootRun
คุณควรสังเกตเห็นเอาต์พุตที่คล้ายกับสิ่งนี้:

ตรวจสอบ localhost:8080 สำหรับสถานะเซิร์ฟเวอร์

โปรดจำไว้ว่า Spring Boot เป็นเครื่องมือที่มีประสิทธิภาพที่ช่วยเร่งการพัฒนาแอปพลิเคชันที่ใช้ Spring ลดความซับซ้อนของการกำหนดค่าและการตั้งค่า
Spring REST vs Spring Boot
แล้วความแตกต่างคืออะไร? ในขณะที่ Spring REST มุ่งเน้นไปที่การให้บริการ RESTful Spring Boot นั้นเกี่ยวกับการทำให้การสร้างแอปพลิเคชัน Spring ทำได้ง่ายขึ้น
Spring REST และ Spring Boot เป็นส่วนหนึ่งของระบบนิเวศ Spring และสามารถใช้เพื่อสร้างเว็บแอปพลิเคชันและบริการ RESTful ได้ อย่างไรก็ตาม พวกเขาทำหน้าที่ที่แตกต่างกันและมีความแตกต่างที่สำคัญบางประการ:
Spring REST:
- Spring REST เป็นส่วนหนึ่งของ Spring framework ที่ให้การสนับสนุนสำหรับการสร้างบริการเว็บตามรูปแบบสถาปัตยกรรม Representational State Transfer (REST)
- เหมาะสำหรับเมื่อคุณต้องการสร้างบริการ RESTful และควบคุมการกำหนดค่าได้มากขึ้น
- Spring REST มักใช้เมื่อคุณทำงานกับระบบนิเวศ Spring อยู่แล้วและต้องการเปิดเผยวิธีการบริการบางอย่างของคุณเป็น API RESTful
Spring Boot:
- Spring Boot ในทางกลับกัน เป็นส่วนขยายของ Spring framework ที่ช่วยลดความซับซ้อนของกระบวนการสร้างแอปพลิเคชันแบบสแตนด์อโลนระดับโปรดักชัน
- มันมี 'starter' dependencies ซึ่งเป็นชุดของตัวอธิบายการพึ่งพาที่สะดวกที่คุณสามารถรวมไว้ในแอปพลิเคชันของคุณและการกำหนดค่าอัตโนมัติ ซึ่งเป็นคุณสมบัติในการกำหนดค่าแอปพลิเคชัน Spring ของคุณโดยอัตโนมัติตามการพึ่งพา jar ที่คุณเพิ่ม
- Spring Boot มีประโยชน์อย่างยิ่งเมื่อคุณต้องการบูตโปรเจกต์หรือไมโครเซอร์วิสใหม่ได้อย่างรวดเร็ว
- นอกจากนี้ยังเป็นตัวเลือกที่ดีเมื่อคุณต้องการพัฒนาแอปพลิเคชันปฏิกิริยาที่ไม่ปิดกั้นและคุณใช้ Spring WebFlux
ไม่ใช่สถานการณ์ใดสถานการณ์หนึ่ง - ในความเป็นจริง คุณสามารถใช้ Spring Boot และ Spring REST ร่วมกันได้!
เมื่อใดควรใช้ Spring REST หรือ Spring Boot
หากคุณต้องการควบคุมการกำหนดค่าของคุณได้มากขึ้น มีความสะดวกสบายในการจัดการกับความซับซ้อนของ Spring สร้างบริการเว็บ และคุณต้องการจัดการคำขอและการตอบสนอง HTTP Spring REST อาจเป็นตัวเลือกที่ดี ในทางกลับกัน หากคุณต้องการเริ่มต้นโปรเจกต์ใหม่และทำงานได้อย่างรวดเร็วด้วยการกำหนดค่าน้อยที่สุด Spring Boot จะเหมาะสมกว่า
นอกจากนี้ ควรสังเกตว่าทั้งสองอย่างนี้ไม่ได้แยกจากกันและมักใช้ร่วมกันในแอปพลิเคชันเดียวกัน ตัวอย่างเช่น คุณสามารถใช้ Spring Boot เพื่อตั้งค่าแอปพลิเคชันใหม่ได้อย่างรวดเร็ว จากนั้นใช้ Spring REST เพื่อเปิดเผยวิธีการบริการบางอย่างของคุณเป็น API RESTful
ทดสอบ Spring APIs
Apidog เป็นแพลตฟอร์มแบบบูรณาการสำหรับการออกแบบ API การดีบัก การพัฒนา การจำลองและการทดสอบ เป็นชุดเครื่องมือที่สมบูรณ์ที่เชื่อมต่อวงจรชีวิต API ทั้งหมด ช่วยให้ทีม R&D ดำเนินการตามแนวทางปฏิบัติที่ดีที่สุดสำหรับการพัฒนา API Design-first
Apidog รวมฟังก์ชันการทำงานของ Postman, Swagger Editor, Swagger UI, Stoplight, ReadMe, JMeter, SoapUI และ Mock ไว้ในแพลตฟอร์มเดียว ซึ่งช่วยให้การพัฒนา API มีประสิทธิภาพและรับประกันว่าจะไม่มีการทำซ้ำงานโดยไม่จำเป็น นักพัฒนาทั่วโลกชื่นชอบในการลดความซับซ้อนของกระบวนการสร้างและทดสอบ API
Step 1: Open Apidog and create a new request.
- เปิด Apidog และเลือก New Request

Step 2: Input the API
- ค้นหาหรือป้อนรายละเอียด API สำหรับคำขอ POST ที่คุณต้องการสร้างด้วยตนเอง

Step 3: Input Parameters
- กรอกพารามิเตอร์ที่จำเป็นและข้อมูลใดๆ ที่คุณต้องการรวมไว้ในเนื้อหาคำขอ

การใช้ Apidog สามารถช่วยประหยัดเวลาและความพยายามเมื่อทำงานกับ API
บทสรุป
ทั้ง Spring REST และ Spring Boot มีจุดแข็งและกรณีการใช้งานของตัวเอง พวกเขาสามารถใช้ร่วมกันเพื่อสร้างแอปพลิเคชันที่มีประสิทธิภาพและแข็งแกร่งได้ ดังนั้น ครั้งต่อไปที่คุณเริ่มโปรเจกต์ใหม่ ให้พิจารณาว่าเครื่องมือใดเหมาะสมกับคุณ