Tích hợp RESTful trong dự án Spring MVC sử dụng Maven

Giới thiệu về RESTful trong Spring MVC

Spring MVC hỗ trợ xây dựng REST API thông qua các annotation như @RequestMapping và @PathVariable. Ví dụ, để xử lý yêu cầu DELETE tại endpoint "/user/{id}", ta có thể triển khai như sau:

@RequestMapping(value = "/user/{userId}", method = RequestMethod.DELETE)
public ResponseEntity<String> deleteUser(@PathVariable("userId") Long id) {
    userService.deleteUser(id);
    return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}

Thay vì sử dụng query parameter truyền thống (ví dụ: /user?id=5), RESTful URL sẽ có dạng /user/5, giúp URL ngắn gọn và dễ hiểu hơn.

Cấu hình RESTful trong ứng dụng

1. Cấu hình web.xml

<web-app>
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-config.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/api/</url-pattern>
    </servlet-mapping>

    <filter>
        <filter-name>httpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    
    <filter-mapping>
        <filter-name>httpMethodFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

Cấu hình này thiết lập DispatcherServlet để xử lý các yêu cầu REST API tại đường dẫn /api/, đồng thời kích hoạt HiddenHttpMethodFilter để hỗ trợ HTTP methods như PUT và DELETE thông qua parameter _method.

2. Thêm dependency vào pom.xml

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.20</version>
</dependency>

Đảm bảo thêm các dependency cần thiết cho Spring MVC và RESTful API trong file pom.xml.

3. Tạo REST Controller

package com.example.demo.controller;

import org.springframework.web.bind.annotation.*;
import com.example.demo.service.UserService;

@RestController
@RequestMapping("/api/users")
public class UserRestController {
    
    private final UserService userService;
    
    public UserRestController(UserService userService) {
        this.userService = userService;
    }
    
    @DeleteMapping("/{id}")
    public void removeUser(@PathVariable Long id) {
        userService.deleteUser(id);
    }
}

Controller này xử lý các yêu cầu DELETE tại endpoint /api/users/{id} để xóa người dùng theo ID.

4. Giao diện kiểm thử

Tạo file test.jsp với đoạn mã JavaScript để gửi yêu cầu REST:

<script>
function sendDeleteRequest() {
    fetch('/api/users/7', {
        method: 'DELETE'
    })
    .then(response => {
        if (response.ok) {
            alert('Xóa thành công!');
        }
    });
}
</script>

<button onclick="sendDeleteRequest()">Xóa người dùng</button>

Khi nhấn nút "Xóa người dùng", trình duyệt sẽ gửi yêu cầu DELETE đến endpoint RESTful và hiển thị thông báo khi thành công.

5. Kiểm tra hoạt động

  1. Khởi động ứng dụng tại địa chỉ http://localhost:8080/demo-app
  2. Nhấn nút "Xóa người dùng" để kích hoạt yêu cầu REST
  3. Kiểm tra log hệ thống hoặc database để xác nhận user ID 7 đã bị xóa

Thẻ: Spring MVC RESTful API Maven Java URL Mapping

Đăng vào ngày 15 tháng 6 lúc 20:36