[Spring boot + Rest API] Overview

1. Các cách để xây dựng rest api trong spring

Để xây dựng rest api trong spring có thể sử dụng nhiều cách. Phổ biến nhất là 3 cách dưới đây

  1. Sử dụng annotation Controller
  2. Sử dụng annotation RestController
  3. Sử dụng jersey (Đây là một framework mã nguồn mở cho việc phát triển các rest api trong java) Chi tiết mình sẽ đi vào từng phần

2. Controller

Bình thường @Controller được sử dụng đê xậy dưng các controller cho web. VÍ dụ thế này

@Controller
public class HouseController {

    @RequestMapping(path = "/house")
    public String index() {
         return "house/index";
    }

}

Tuy nhiên để sử dụng cách mapping trên như một rest api, ta chỉ việc thêm vào annotation @ResponseBody . Annotation này có tác dụng thay vì tìm kiếm template house/index, thì dữ liệu trả về sẽ có đúng như dạng đã khai báo trong method. Cụ thể ở đây là một String

@Controller
public class HouseController {

    @RequestMapping(path = "/house")
    @ResponseBody
    public String index() {
         return "house/index";
    }

}

3. RestController

RestController đơn giản là sự kết hợp của 2 annotation @Controller@Responsebody.

@RestController
public class CarController {

    @GetMapping(path = "/car/{id}")
    public String get(@PathVariable("id") int id) {
        switch (id) {
            case 1:
                return "Day la car 1";
            case 2:
                return "Day la car 2";
            default:
                return "Day la car n";
        }
    }

}

4. Jersey

Để sử dụng Jerset trong spring boot, bạn phải thêm dependency sau:

    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jersey</artifactId>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-server</artifactId>
            <version>2.23.2</version>
            <type>jar</type>
        </dependency>

Và khai bao ResourceConfig

@Configuration
@ApplicationPath("/api")
public class MyResourceConfig extends ResourceConfig {

    public MyResourceConfig() {
        registerEndpoints();
    }

    private void registerEndpoints() {
        register(MoneyController.class);
    }

}

5. Demo

http://123link.vip/jX80Ulc