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ẫnMiêu tả
GET/api/v1/employeesHiển thị tất cả nhân viên
GET/api/v1/employees/1Hiển thị nhân viên có id là 1
POST/api/v1/employeesThêm nhân viên
PUT/api/v1/employees/1Cập nhật nhân viên có id là 1
DELETE/api/v1/employess/1Xoá 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

BÌNH LUẬN

Please enter your comment!
Please enter your name here