Skip to main content

[Tutorial] Series phát triển RESTful Web Service với Spring Boot (P1) – Tạo một Web Service đơn giản

Hôm nay chúng ta cùng tìm hiểu và làm một dự án với công nghệ mới – Web Service

Nhưng trước tiên chúng ta cần tìm hiểu “Tại sao chúng ta cần Web Service?”

Giới thiệu Web Service

Trong các ứng dụng MVC thông thường, chúng ta có 3 tầng của ứng dụng Model – View – Controller

Phần Controller chứa các câu lệnh sử lý logic từ yêu cầu của người dùng, sau đó chuyển kết quả mong muốn cho View để người dùng có thể thấy được kết quả

Vậy nếu bạn có một ứng dụng web bán hàng, quản lý nhân viên và bạn muốn làm một ứng dụng cho mobile thì bạn phải làm sao? Viết lại phần Business Logic cho những ứng dụng đó?

“Làm lại phần xử lý thì mệt lắm! Ứng dụng mình một đống tính năng, không lẽ qua Android viết lại, iOS viết lại?! Có thể tách phần xử lý đó ra, chỉ cần gọi một URL, API gì đó, qua đó xử lý rồi trả về kết quả?” Thế là người ta nghĩ ra Web Service

Một mô hình web service đơn giản

Điểm Mạnh:

  • Hoạt động trên giao thức HTTP / HTTPS
  • Giúp bạn triển khai ứng dụng đa nền tảng dễ dàng hơn
  • Phân tách phần xử lý Logic / Database với Webapp giúp bảo trì, sửa lỗi các thành phần nhanh hơn, an toàn hơn

Điểm yếu

  • Cần quan tâm nhiều hơn đến bảo mật Web Service, phân quyền, xác thực người dùng trên Web Service

Trong thế giới Web Service, chúng ta chắc đã nghe đến 2 cái tên SOAPREST.

SOAP viết tắt của Simple Object Access Protocol, là một giao thức Web Service với việc truyền – nhận thông tin thông qua XML – eXtensible Markup Language, SOAP có những quy định chặt chẽ, độ tin cậy cao và được sử dụng nhiều trong các doanh nghiệp

REST viết tắt của REpresentational State Transfer, là một kiến trúc được xây dựng dựa trên SOAP. Nhận và truyền thông tin qua nhiều loại dữ liệu hơn như HTML, JSON, Text. REST không quy định chặt chẽ bằng SOAP và được sử dụng rộng rãi hơn so với SOAP

 

Tiếp theo, chúng ta cùng tìm hiểu một công nghệ khá hay đến từ Pivotal – Công ty phát triển Web Framework “Vô địch Java hội” Spring Framework

Pivotal có một công nghệ giúp chúng ta có thể chạy webapp giống như thực thi một file jar thông thường – Spring Boot

Spring Boot hoạt động giống với một ứng dụng Java thông thường, tức có file chứa hàm main, các thiết đặt của Spring như datasource, config của Spring đều nằm trong file application.properties. Spring Boot nhúng web server như Tomcat, Jetty vào trong ứng dụng, vì thế ta có thể chạy một dòng lệnh đơn giản trong cmd là có thể chạy được webapp với Spring Boot

java -jar <tên file war>.war – Giống chạy file jar đúng không?

Hoặc

mvn spring-boot:run

Tutorial hôm nay, chúng ta sẽ bắt tay vào làm một RESTful Web Service quản lý nhân viên sử dụng Spring Boot

Những thứ bạn cần chuẩn bị:

Bắt đầu nào! 😀

 

Chuẩn bị Project

Tạo một project Spring Boot rất đơn giản, chỉ cần truy cập vào trang web https://start.spring.io/ , điền GroupId, ArtifactId và thêm các thành phần cần thiết trong phần Dependencies, nó sẽ gợi ý kết quả ra list nên bạn an tâm, sau đó nhấn Generate Project

Ta có được file zip

Giải nén ra, cấu trúc thư mục như hình dưới

 

Phát triển ứng dụng

Cấu trúc thư mục sau khi hoàn thành ở hình dưới

Tạo CSDL

Bạn có thể sử dụng SQL Server, MySQL hay PostgreSQL để tạo CSDL, chép SQL Script sau và điều chỉnh cho phù hợp (Mình sử dụng SQL Server)

Cấu hình pom.xml

Ở phần tạo project, Spring không hỗ trợ thêm thư viện Hibernate, ta phải add bằng tay, chép các dependency vào giữa tag dependencies

Tạo HibernateUtil.java

Class HibernateUtil giúp ta quản lý kết nối đến cơ sở dữ liệu, tạo Hibernate Session để thực hiện thao tác đến CSDL

Thay chuỗi giá trị ở hibernate.connection.driver_class nếu bạn sử dụng CSDL khác SQL Server

Thay thế các chuỗi YOUR_CONNECTION_URLYOUR_DATABASE_USERNAME và YOUR_DATABASE_PASSWORD theo cấu hình database của bạn

Thay thế chuỗi YOUR_MODEL_PACKAGE bằng package chứa model của bạn

Tạo Model Employee

Tạo model Employee.java để mapping với Hibernate (sử dụng JPA Annotations)

Tạo Employee Service

Employee Service gồm 2 class

  • EmployeeService.java là Interface chứa các method của Service

  • EmployeeServiceImpl.java là class thực thi từ Interface EmployeeService.java

Tạo Controller

Đây là thành phần điều khiển việc routing, nhận request và respone lại thông tin cho khách hàng

 

Chạy ứng dụng

Sau khi hoành thành việc phát triển, chạy ứng dụng bằng cách mở cmd và trỏ đến thư mục gốc của project đang làm

Đầu tiên truy cập vào thư mục bạn lưu project, mở cmd bằng cách nhấn vào thanh địa chỉ gõ cmd nhấn Enter. cmd sẽ trỏ ngay vào thư mục project bạn đang mở trên File Explorer

Sau đó gõ lệnh sau

mvn spring-boot:run

Màn hình cmd xuất hiện dòng sau và nhấp nháy bên dưới tức đã chạy ứng dụng thành công

FrameworkServlet 'dispatcherServlet': initialization completed in xx ms

 

Cài đặt Postman để test Web Service

Postman là một chương trình rất phổ biến để test API, bạn có thể cài đặt vào Chrome như một tiện ích tại địa chỉ https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=en

Màn hình của Postman như sau

 

Demo

List toàn bộ nhân viên

HTTP Method: GET

URL: localhost:8080/employees

Tìm nhân viên qua ID

HTTP Method: GET

URL: localhost:8080/employee?id=1

Tìm kiếm nhân viên qua tên

HTTP Method: GET

URL: localhost:8080/employee?name=Trần Thanh Khang

Thêm nhân viên

HTTP Method: POST

URL: localhost:8080/addEmployee

Header: Content-Type=application/json

Body:

{

"name": "Nguyễn Văn Tèo",
    "address": "Bình Dương",
    "phone": "0983758695",
    "salary": 6000000

}

Nếu respone trả về code status 200: OK tức đã tạo thành công

Kiểm tra

Sửa nhân viên

HTTP Method: PUT

URL: localhost:8080/updateEmployee?id=7

Header: Content-Type=application/json

Body:

{

"name": "Nguyễn Văn Tèo",
    "address": "Tây Ninh",
    "phone": "0978657485",
    "salary": 6500000

}

Nếu respone trả về code status 200: OK tức đã update thành công

Xoá nhân viên

HTTP Method: DELETE

URL: localhost:8080/deleteEmployee?id=7

Nếu respone trả về code status 200: OK tức đã xoá thành công

Kiểm tra

 

Kết

Vậy là chúng ta đã tạo thành công một Web Service nho nhỏ. Trong phần sau, chúng ta sẽ deploy Web Service lên Heroku

Chúng các bạn thành công!

3 thoughts to “[Tutorial] Series phát triển RESTful Web Service với Spring Boot (P1) – Tạo một Web Service đơn giản”

  1. Thanks. Hóng tiếp phần 2, mình là mobile dev, đang tự vọc backend mà không rõ làm sao deploy database lên được nhờ có các tutorial của bạn mà mình hiểu được.

Leave a Reply

%d bloggers like this: