Làm quen Spring Framework qua dự án RESTful Web Service đơn giản
Spring Framework Api

Làm quen Spring Framework qua dự án RESTful Web Service đơn giản

Bài viết này hướng dẫn bạn cách tạo một dịch vụ RESTful Web Service đơn giản trên Spring Framework bằng ngôn ngữ Java. Demo của app này sẽ thực hiện những điều sau:

Truy cập vào link http://localhost:8080/greeting bằng phương thức GET sẽ trả về chuỗi JSON:

{"id":1,"content":"Hello, World!"}

Thêm đối số name trên chuỗi đường dẫn http://localhost:8080/greeting?name=CameoPlus ta sẽ được kết quả như sau:

{"id":1,"content":"Hello, CameoPlus!"}

Nhưng trước khi bắt đầu bạn cần:

  • Khoảng 15 phút thời gian xem hướng dẫn này.
  • Đã cài đặt môi trường thực thi Tomcat trên máy bạn.
  • Cài đặt bộ công cụ Spring Tool Suite (STS) để viết code

Xem thêm: Apache TomCat là gì? Hướng dẫn cách cài đặt trên để chạy ứng dụng Java Web

Tạo class mô hình hóa dữ liệu

Đầu tiên chúng ta cần phân tích yêu cầu của ứng dụng, từ đó mới bắt tay vào xây dựng. Application này yêu cầu khi truy cập vào link http://localhost:8080/greeting bằng phương thức GET thì sẽ trả về nội dung là 1 chuỗi JSON chứa lời chào truyền thuyết “Hello World”

{
    "id": 1,
    "content": "Hello, World!"
}

Phân tích cấu trúc JSON này ta thấy:

  • id mã định danh cho nội dung trả về.
  • content – chứa nội dung văn bản.

Từ cấu trúc file JSON và phân tích bên trên ta có thể hình tượng và thiết kế 1 lớp Greeting như sau:

src/main/java/hello/Greeting.java

package hello;

public class Greeting {

    private final long id;
    private final String content;

    public Greeting(long id, String content) {
        this.id = id;
        this.content = content;
    }

    public long getId() {
        return id;
    }

    public String getContent() {
        return content;
    }
}

Tạo controller kết nối và thuyên chuyển datas

Cách tiếp cận của Spring Framework khi xây dựng các dịch vụ web RESTful là hướng các yêu cầu HTTP thông các qua các bộ xử lý được đánh dấu – controllers. Như trong ví dụ này, khi có request đến liên kết http://localhost:8080/greeting bằng phương thức GET thì ứng dụng Spring sẽ xác định yêu cầu này thông qua chú thích @RestController. Class GreetingController sẽ xử lý và trả về 1 đối tượng Greeting được mô tả phía trên.

Nội dung của class GreetingController được mô tả như sau:

src/main/java/hello/GreetingController.java

package hello;

import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GreetingController {

    private static final String template = "Hello, %s!";
    private final AtomicLong counter = new AtomicLong();

    @RequestMapping("/greeting")
    public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
        return new Greeting(counter.incrementAndGet(),
                            String.format(template, name));
    }
}

Giải thích đoạn code phía trên như sau:

  • @RestController: đánh dấu đây là 1 RestController nội dung trả về sẽ là một JSON mà không phải ở dạng HTML
  • @RequestMapping: đánh dấu ánh xạ tham số “/greeting” sẽ được xử lý bởi phương thức greeting() phía dưới.

Ví dụ trên không chỉ định phương thức request là GET,PUT,POSTv.v., do đó @RequestMappingánh xạ tất cả các hoạt động HTTP theo mặc định. Sử dụng @RequestMapping(method=GET)để thu hẹp ánh xạ này.

  • @RequestParam: liên kết giá trị của tham số trong chuỗi truy vấn namevào tham số name của phương thức greeting()phương thức. Nếu nametham số vắng mặt trong yêu cầu, defaultValue“world” sẽ được sử dụng.

Một điểm khác biệt chính giữa web MVC truyền thống và dịch vụ web RESTful ở trên là cách mà phần nội dung phản hồi HTTP được tạo ra. Thay vì hiển thị trên View (trong Model -View -Controller) để thực hiện kết xuất dữ liệu chào phía máy chủ sang HTML, bộ điều khiển dịch vụ web RESTful này chỉ đơn giản là cư trú và trả về một Greetingđối tượng. Dữ liệu đối tượng sẽ được ghi trực tiếp vào phản hồi HTTP dưới dạng JSON.

Tạo file bootstrap để thực thi dự án

Mặc dù có thể đóng gói dịch vụ này dưới dạng tệp tin WAR truyền thống để triển khai cho máy chủ ứng dụng, cách tiếp cận đơn giản hơn được trình bày dưới đây tạo ra một ứng dụng độc lập. Bạn đóng gói mọi thứ trong một tệp JAR duy nhất, được điều khiển bởi phương thức main() trong cách tiếp cận ngôn ngữ Java cũ.

src/main/java/hello/Application.java

package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

@SpringBootApplication là một chú thích tắt bao gồm các ngữ nghĩa sau đây:

  • @Configuration gắn thẻ cho class này như một nguồn định nghĩa bean cho bối cảnh ứng dụng.
  • @EnableAutoConfiguration báo cho Spring Boot để bắt đầu thêm các bean dựa trên các cài đặt classpath, các bean khác và các cài đặt thuộc tính khác nhau.
  • Thông thường bạn sẽ thêm @EnableWebMvcmột ứng dụng Spring MVC, nhưng Spring Boot sẽ tự động thêm nó khi thấy spring-webmvc trên đường dẫn lớp. Thao tác này gắn cờ ứng dụng dưới dạng một ứng dụng web và kích hoạt các hành vi chính như thiết lập một DispatcherServlet.
  • @ComponentScanbảo Spring tìm kiếm các thành phần, cấu hình và dịch vụ khác trong gói hello, cho phép nó định vị được bộ điều khiển.

 

Bạn có thể xem phiên bản hướng dẫn tiếng anh của bài viết này tại đây

 

Trả lời

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.

Close Menu
×
×

Cart