Bài 5. Tạo Rest API HTTPGET lấy danh sách dữ liệu bằng Vert.X – phần 1

Bài này Tui sẽ hướng dẫn các bạn cách tạo API GET để lấy ra danh sách dữ liệu, sau đó dùng PostMan để thử nghiệm.

HTTP GET:

GET là một trong những phương thức để tạo ra API để truy suất dữ liệu: Dữ liệu đơn, dữ liệu danh sách, hỗ trợ tạo các chức năng tìm kiếm và sắp xếp….

Bài học này sẽ hướng dẫn chúng ta cách thức tạo API GET để lấy danh danh sách Employee. Bài học sau sẽ tiếp tục với phần chi tiết Employee, minh họa bộ dữ liệu:

Ta tạo 1 Project tên LearnRESTApi, sau đó thêm thư viện Vert.X vào:

compile ‘io.vertx:vertx-web:3.9.4’

hoặc:

implementation ‘io.vertx:vertx-web:3.9.4’

Tiến hành tạo một package tên là model: Bấm chuột phải vào java chọn new/ package

Tiến hành tạo một package tên là tranduythanh.com.model: Bấm chuột phải vào java chọn new/ package

Nhập tranduythanh.com.model rồi nhấn Enter, ta có package xuất hiện như dưới đây:

Tiếp tục bấm chuột phải vào model/ chọn New/ chọn Java Class:

Đặt tên là Employee , chọn Class rồi nhấn phím Enter:

Kết quả sau khi nhấn Enter:

Coding cho lớp Employee gồm 3 thuộc tính: id, name, email. Tạo các getter/setter, constructor

Dưới đã là Java coding chi tiết cho lớp Employee:

[code language=”java”]
package tranduythanh.com.model;

public class Employee {
private int id;
private String name;
private String email;
public Employee() {
}
public Employee(int id, String name, String email) {
this.id = id;
this.name = name;
this.email = email;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}

[/code]

Lưu ý, ta chỉ cần khai báo các thuộc tính của Employee, các getter/setter, constructor… ta có thể dùng công cụ có sẵn để tạo: Bấm chuột phải vào màn hình coding-> chọn Generate…–>chọn getter/setter/constructor….

Tiếp theo Tiến hành tạo một package tên là tranduythanh.com.verticle để lập trình các REST Api. Cụ thể là lấy danh sách Employee. Cách tạo package như model.

Trong package verticle ta tạo 1 lớp EmployeeVerticel. Cho lớp EmployeeVerticle kế thừa AbstractVerticle:

Ta giả lập một ít dữ liệu, bằng cách viết hàm createExampleData() để tạo ra một số Employee mẫu, lưu vào HashMap:

Coding java:

[code language=”java”]
package tranduythanh.com.verticle;

import io.vertx.core.AbstractVerticle;
import io.vertx.core.Promise;
import io.vertx.core.http.HttpServerResponse;
import io.vertx.core.json.Json;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.RoutingContext;
import tranduythanh.com.model.Employee;

import java.util.HashMap;

public class EmployeeVerticle extends AbstractVerticle
{
private HashMap employees=new HashMap();
public void createExampleData()
{
employees.put(1,new Employee(1,”Mr Obama”,”Obama@gmail.com”));
employees.put(2,new Employee(2,”Mr Donald Trump”,”Trump@gmail.com”));
employees.put(3,new Employee(3,”Mr Putin”,”Putin@gmail.com”));
}
}

[/code]

Ta viết thêm hàm getAllEmployees cho lớp EmployeeVerticle để cung cấp danh sách Employee cho API lấy danh sách Employee:

[code language=”java”]
private void getAllEmployees(RoutingContext routingContext) {
HttpServerResponse response=routingContext.response();
response.putHeader(“content-type”,”application/json;charset=UTF-8″);
response.end(Json.encodePrettily(employees.values()));
}
[/code]

Ta override phương thức start cho EmployeeVerticle để triển khai dịch vụ(cách tạo xem ở bài trước)

[code language=”java”]
@Override
public void start(Promise startPromise) throws Exception {

}
[/code]

Sau đó tiến hành chỉnh sửa:

[code language=”java”]
@Override
public void start(Promise startPromise) throws Exception {
createExampleData();
Router router=Router.router(vertx);
router.get(“/api/employees”).handler(this::getAllEmployees);
vertx
.createHttpServer()
.requestHandler(router::accept)
.listen(config().getInteger(“http.port”, 8080),
result -> {
if (result.succeeded()) {
startPromise.complete();
} else {
startPromise.fail(result.cause());
}
}
);
}
[/code]

Chương trình khi chạy sẽ chạy ở port 8080: http://localhost:8080/api/employees

Code đầy đủ của EmployeeVerticle sau khi update:

[code language=”java”]
package tranduythanh.com.verticle;

import io.vertx.core.AbstractVerticle;
import io.vertx.core.Promise;
import io.vertx.core.http.HttpServerResponse;
import io.vertx.core.json.Json;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.RoutingContext;
import tranduythanh.com.model.Employee;

import java.util.HashMap;

public class EmployeeVerticle extends AbstractVerticle
{
private HashMap employees=new HashMap();
public void createExampleData()
{
employees.put(1,new Employee(1,”Mr Obama”,”Obama@gmail.com”));
employees.put(2,new Employee(2,”Mr Donald Trump”,”Trump@gmail.com”));
employees.put(3,new Employee(3,”Mr Putin”,”Putin@gmail.com”));
}
private void getAllEmployees(RoutingContext routingContext) {
HttpServerResponse response=routingContext.response();
response.putHeader(“content-type”,”application/json;charset=UTF-8″);
response.end(Json.encodePrettily(employees.values()));
}
@Override
public void start(Promise startPromise) throws Exception {
createExampleData();
Router router=Router.router(vertx);
router.get(“/api/employees”).handler(this::getAllEmployees);
vertx
.createHttpServer()
.requestHandler(router::accept)
.listen(config().getInteger(“http.port”, 8080),
result -> {
if (result.succeeded()) {
startPromise.complete();
} else {
startPromise.fail(result.cause());
}
}
);
}
}

[/code]

Tiếp theo tạo một lớp Universal để deploy EmployeeVerticle:

Code Java của Universal:

[code language=”java”]
package tranduythanh.com;

import io.vertx.core.Vertx;
import tranduythanh.com.verticle.EmployeeVerticle;

public class Universal {
public static void main(String[]args)
{
Vertx vertx=Vertx.vertx();
vertx.deployVerticle(new EmployeeVerticle());
}

}

[/code]

Như vậy ta đã coding xong REST API HTTP GET lấy danh sách Employee:

bây giờ ta tiến hành chạy:

Chọn biểu tượng hình tam giác màu xanh ở hàm main==> bấm run Universal.main()

Chương trình chạy:

Ta mở trình duyệt hoặc Postman lên để test:

Có thể test bằng PostMan:

Như vậy tới đây Tui đã hướng dẫn chi tiết cho các bạn xong cái REST API HTTPGET lấy danh sách Employee.

Các bạn cố gắng làm lại nhiều lần để hiểu rõ cách cài đặt và deploy Verticle.

Coding bài này các bạn tải ở đây: https://www.mediafire.com/file/w41lbziir52qm60/LearnRESTApi_P1.rar/file

Bài sau Tui sẽ hướng dẫn các bạn cách làm REST API HTTPGET lấy chi tiết 1 đối tượng.

Chúc các bạn thành công!

2 thoughts on “Bài 5. Tạo Rest API HTTPGET lấy danh sách dữ liệu bằng Vert.X – phần 1”

Leave a Reply