Hướng dẫn sử dụng Spring Boot để tạo Restful API
Trong bài Hướng dẫn sử dụng Spring Boot để tạo Restful API sẽ sử dụng Spring Boot, JPA và MySQL để tạo API hỗ trợ 4 tính năng cơ bản đó là thêm (C), xem (R), cập nhật (U) và xoá (D).
RESTFul API mà chúng tôi tạo với mục đích xem, thêm, xoá và sửa thông tin nhân viên. Thông tin mỗi nhân viên bao gồm họ (firstName), tên (lastName) và địa chỉ email.
Kết quả sau khi tạo RESTFul API thành công sẽ như sau
Phương thức | Đường dẫn | Miêu tả |
GET | /api/v1/employees | Hiển thị tất cả nhân viên |
GET | /api/v1/employees/1 | Hiển thị nhân viên có id là 1 |
POST | /api/v1/employees | Thêm nhân viên |
PUT | /api/v1/employees/1 | Cập nhật nhân viên có id là 1 |
DELETE | /api/v1/employess/1 | Xoá nhân viên có id là 1 |
Hướng dẫn sử dụng Spring Boot để tạo Restful API – Các bước thực hiện
1/ Tạo một Spring Boot Application
Chúng ta truy cập https://start.spring.io/ và thao tác như trong hình bên dưới
Chọn Generate Project để tải project về máy tính
2/ Import restful-api.zip vào eclipse
Giải nén restful-api
Mở eclipse -> chọn File -> chọn Open Projects from File System… -> chọn Select Folder
Chọn Finish
Các bạn lưu ý ngay sau khi chúng ta import vào, eclipse sẽ tiến hành download những dependency mà chúng ta đã khai báo. Do đó, máy tính phải có kết nối internet
Project sau khi import vào eclipse
3/ Tạo một model là Java class và đặt tên Employee
Nhập code cho Employee.java
4/ Tạo một repository là Java Interface và đặt tên EmployeeRepository
Nhập code cho EmployeeRepository.java
5/ Tạo một exception là một Java class và đặt tên ResourceNotFoundException
Nhập code cho ResourceNotFoundException.java
6/ Tạo một controller là Java class và đặt tên EmployeeController
Nhập code cho EmployeeController.java
package vn.giasutinhoc.restfulapi.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import vn.giasutinhoc.restfulapi.exception.ResourceNotFoundException;
import vn.giasutinhoc.restfulapi.model.Employee;
import vn.giasutinhoc.restfulapi.repository.EmployeeRepository;
@RestController
@RequestMapping("api/v1")
public class EmployeeController {
@Autowired
private EmployeeRepository employeeRepository;
@GetMapping("employees")
public List<Employee> getAllEmployees() {
return employeeRepository.findAll();
}
@GetMapping("employees/{id}")
public ResponseEntity<Employee> getEmployeeById(@PathVariable(value = "id") Long employeeId)
throws ResourceNotFoundException {
Employee employee = employeeRepository.findById(employeeId)
.orElseThrow(() -> new ResourceNotFoundException("Nhân viên này không tồn tại: " + employeeId));
return ResponseEntity.ok().body(employee);
}
@PostMapping("employees")
public Employee createEmployee(@Valid @RequestBody Employee employee) {
return employeeRepository.save(employee);
}
@PutMapping("employees/{id}")
public ResponseEntity<Employee> updateEmployee(@PathVariable(value = "id") Long employeeId,
@Valid @RequestBody Employee employeeDetails) throws ResourceNotFoundException {
Employee employee = employeeRepository.findById(employeeId)
.orElseThrow(() -> new ResourceNotFoundException("Nhân viên này không tồn tại: " + employeeId));
employee.setEmail(employeeDetails.getEmail());
employee.setLastName(employeeDetails.getLastName());
employee.setFirstName(employeeDetails.getFirstName());
final Employee updatedEmployee = employeeRepository.save(employee);
return ResponseEntity.ok(updatedEmployee);
}
@DeleteMapping("/employees/{id}")
public Map<String, Boolean> deleteEmployee(@PathVariable(value = "id") Long employeeId)
throws ResourceNotFoundException {
Employee employee = employeeRepository.findById(employeeId)
.orElseThrow(() -> new ResourceNotFoundException("Nhân viên này không tồn tại: " + employeeId));
employeeRepository.delete(employee);
Map<String, Boolean> response = new HashMap<>();
response.put("deleted", Boolean.TRUE);
return response;
}
}
7/ Mở application.properties và thêm code
Hướng dẫn sử dụng Spring Boot để tạo Restful API – Build, Deploy và Run
1/ Cài đặt Spring Tools
Chọn Help -> chọn Eclipse Marketplace… -> chọn Spring Tools -> chọn Install
Chọn Confirm
Chọn I accept the terms of the license agreements -> chọn Finish
Chờ eclipse install. Sau khi install thành công bạn hãy restart eclipse
2/ Tạo database
Database sau khi tạo
3/ Chuột phải lên project -> chọn Run As -> chọn Spring Boot App
Run thành công
4/ Test
Để test API, chúng tôi sử dụng Postman
Thêm mới nhân viên
Hiển thị danh sách nhân viên
Cập nhật thông tin nhân viên
Xoá nhân viên
Hiển thị thông tin nhân viên dựa vào mã nhân viên