พาทำ Web Service แบบมืออาชีพ ด้วย Spring Boot และ Java

Estimated practice time

15 minutes

บทความที่ผ่านมาได้พูดถึง Spring Framework โดยมีแนวคิดหลักคือเราสามารถเขียน Code ไว้ก่อน แล้วค่อยตั้งค่าการทำงานต่างๆ (Configuration) ช่วยให้เรามีความยืดหยุ่นในการสร้าง Software

ใครยังสงสัย กดอ่านที่บทความด้านล่างก่อนเล้ย

  1. เขาสร้าง Web Application กันยังไง
  2. Spring Boot ช่วยอะไร
  3. สร้าง Project
  4. เขียน File ต่างๆ
  5. ถึงเวลาชื่นชมผลงาน
  6. สรุป
Note

Note1: Spring Framework ที่อธิบายในบทความนี้เป็นเวอร์ชัน 6.x

Note2: Spring Boot ที่อธิบายในบทความนี้เป็นเวอร์ชัน 3.x

Spring Framework จะมี Framework ให้ใช้อีกหลายตัว เช่น Spring Boot, Spring Cloud, Spring Data และอีกมากมาย

ก่อนอื่นเรามารู้จักกับ Web Application ที่นิยมในปัจจุบันกันก่อน

เขาสร้าง Web Application กันยังไง

ในปี 2003 ได้เกิดสิ่งที่เรียกว่า MVC Web Application ขึ้นมา เพื่อช่วยในการสร้าง Web Application โดยประกอบไปด้วย 3 ส่วน

  1. M หมายถึง Model เป็นส่วนของข้อมูล
  2. V หมายถึง View เอาไว้ใช้แสดงผล
  3. C หมายถึง Controller ประกอบไปด้วย Method หลายตัว มีหน้าที่ทำงานตาม Request ที่เข้ามา แล้วเรียกใช้ Method ที่เหมาะสม ดูตัวอย่างได้จากรูปด้านล่าง
Controller in MVC Web Application

ซึ่งประโยชน์ของ MVC Web Application คือ Unit Testing นั่นเองง

ในบทความนี้เราจะมาทำในส่วน Controller โดยใช้ Spring Boot สร้าง Web Service ที่ช่วยจัดการกับ HTTP Requests ที่เข้ามา แล้วเลือกใช้ Method ที่เหมาะสม

ตัวอย่าง HTTP Request เช่น

http://localhost:8080/date

Tip! ในภาษา Java จะเรียก Function ว่า Method

Spring Boot ช่วยอะไร

Spring Boot มีแนวคิดหลักคือ “Auto Configuration” หมายถึงมีการตั้งค่าแบบ Default มาให้แล้ว ช่วยเพิ่มความสะดวกสบายให้กับผู้ที่ต้องการสร้าง MVC Web Application

แต่ถึงมีค่า Default มาให้แล้ว ก็สามารถแก้ไขได้นะ ยกตัวอย่างเช่น ค่า Default เราทำงานที่ http://localhost:8080

แต่จะเปลี่ยนเป็น http://localhost:1000 ก็ได้

มาทำไปพร้อมกัน สามารถกดดู Code ได้จาก

สร้าง Project

มาลองสร้าง Project ของเราแบบไม่ต้องใช้เมาส์กัน เข้าไปที่ Terminal ในเครื่องของตัวเองแล้วใช้คำสั่งในตารางด้านล่าง จากบนลงล่างเลย (ระบบปฏิบัติการ windows / macOS ใช้คำสั่งไม่เหมือนกันนะ)

WindowsmacOS
mkdir java-spring-bootmkdir java-spring-boot
cd java-spring-bootcd java-spring-boot
echo X > pom.xmltouch pom.xml
mkdir codemkdir code
mkdir code\servicemkdir code/service
echo X > code\service\Start.javatouch code/service/Start.java
mkdir testmkdir test
mkdir test\servicemkdir test/service
echo X > code\service\Test.javatouch code/service/Test.java
สร้าง project ผ่าน Terminal
หน้าตาโปรเจคของเรา

เขียน File ต่างๆ

เข้าไปที่ Apache NetBeans เลือก File -> Open Project เลือก Folder ที่เราพึ่งสร้างไป (java-spring-boot)

Folder ไหนที่มีไฟล์ pom.xml จะถือว่าเป็น Maven project ทำให้ NetBeans หาเจอ

ต่อไปมาดูรายละเอียดต่างๆในไฟล์ สามารถเปิด Code ที่แปะไว้ใน GitHub พร้อมกับอ่านคำอธิบายจากบทความนี้ได้เลยยย

pom.xml

POM ย่อมาจาก Project Object Model เป็นไฟล์ที่เอาไว้กำหนดการตั้งค่าต่างๆในโปรเจค

<modelVersion> -> เวอร์ชันของ Project Object Model

<groupId> -> มักจะหมายถึงชื่อของบริษัทที่เขียนกลับหลัง

<artifactId> -> มักจะหมายถึงชื่อของโปรเจค

<dependencies> -> เป็นคำสั่งเพิ่มเติม โดยในโปรเจคนี้เราใช้ Spring Boot จะดาวน์โหลด Web Server ที่ชื่อ Tomcat มาให้โดยอัตโนมัติและมี Default Port คือ http://localhost:8080

<build> -> กำหนด Folder ที่เราเขียน Code นั่นคือ Folder ชื่อ Code และ Test

<properties> -> กำหนดว่าใช้ Java เวอร์ชัน 22

Start.java

ประกอบไปด้วย 3 Class

  1. Class Start

โดยที่ข้างในมี Function main อยู่ เนื่องจาก Java จะเริ่มต้นรันโปรเจคจากการมองหา File ที่มี Function main ก่อน Class นี้จึงทำหน้าที่เป็นการทำงานหลักของโปรแกรม

2. Class Setup

ทำหน้าที่เป็น Configuration Class ถูกกำหนดด้วย @SpringBootApplication เป็นการตั้งค่าเบื้องต้นสำหรับ Spring Boot ซึ่งจะมีบทบาทสำคัญในโปรเจคเมื่อมีการใช้งาน Spring Beans ในอนาคต (แต่ในโปรเจคนี้ไม่ได้ใช้งาน)

3. Class Sample

ทำหน้าที่เป็น Controller ช่วยจัดการ HTTP Request ที่เข้ามา ถูกกำหนดด้วย @RestController

จากนั้น map URL กับ Method ที่เราต้องการใช้ให้ตรงกัน ด้วยคำสั่ง @RequestMapping() ตัวอย่างเช่น เมื่อเราเข้าไปที่ http://localhost:8080/check จะต้องใช้ Method ที่ชื่อ check()

ถึงเวลาชื่นชมผลงาน

กด Build จากนั้นกด Run

กด Build และ Run ใน Netbeans

ถ้า Run สำเร็จ ที่ Console ด้านล่างจะแสดงผลแบบนี้

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/

 :: Spring Boot ::                (v3.3.2)

จะหมายถึง Project ของเราได้ถูกรันเรียบร้อย

มาลองทดสอบ Web Service ที่เราสร้าง โดยการเข้าไปที่ Web Browser อะไรก็ได้แล้ว

กรอก URL ด้านล่างลงไป

http://localhost:8080/check

ใน Web Browser ของเราต้องแสดงผลว่า Spring Boot is Ready! เนื่องจาก เรากำหนดให้ HTTP Request นี้ จะไปเรียก Method ที่ชื่อ check()

ไหนลองอีกอันซิ

http://localhost:8080/date

ถ้าเกิดว่า Web Browser แสดงผลเป็นวันเวลา ณ ปัจจุบันที่ประเทศไทย ก็ขอแสดงความยินดีด้วย โปรเจคของเราทำงานถูกต้องแล้วว

Tip! จริงๆแล้วเราไม่จำเป็นต้องเขียนไฟล์ pom.xml เอง เราสามารถสร้างโปรเจคได้จาก https://start.spring.io/ แต่เพื่อความเข้าใจเลยพาเขียนเองซะเลย5555

สรุป

บทความนี้ได้พาไปรู้จักกับ MVC Web Application ซึ่งเป็นรูปแบบการพัฒนา Web Application ที่ได้รับความนิยมมากที่สุดในปัจจุบัน

โดยอธิบายแนวคิดหลักของ Spring Boot ที่ช่วยในการตั้งค่าแบบอัตโนมัติ (Auto Configuration)

จากนั้นได้อธิบายการสร้าง Web Service โดยใช้ Spring Boot ซึ่งมี Controller ที่ทำหน้าที่จัดการกับ HTTP requests ที่เข้ามา และเรียกใช้ Method ที่ต้องการเพื่อส่งผลลัพธ์กลับไปยังผู้ใช้นั่นเองงง

ในบทความต่อไป จะพาไปสร้าง Web Service ที่เชื่อมกับ Database สนุกแน่นอน

หวังว่าบทความนี้จะเป็นจุดเริ่มต้นที่ดีสำหรับผู้ที่อยากศึกษา Spring Boot นะครับ

Get new posts sent directly to your inbox!


Comments

  1. เข้าใจการทำงานของ HTTP ผ่าน Google Cloud – Kornkan Changsila Avatar

    […] พาทำ Web Service แบบมืออาชีพ ด้วย Spring Boot และ Java […]

    Like

Leave a comment