Javalin là một lightweight web framework (nói nôm na thì lightweight có nghĩa là nhẹ, không cồng kềnh nhiều thứ) có thể dùng để xây dựng các ứng dụng web RESTful Web Service. Nó sử dụng embedded Jetty server giúp chúng ta có thể chạy ứng dụng một cách dễ dàng. Trong bài viết này, mình sẽ hướng dẫn các bạn các bước cơ bản để xây dựng một ứng dụng RESTful Web Service với Javalin các bạn nhé!
Để làm ví dụ, mình sẽ tạo một Maven project có nội dung như sau:
Javalin dependency như sau:
1 2 3 4 5 6 7 8 9 10 |
<dependency> <groupId>io.javalin</groupId> <artifactId>javalin</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.26</version> </dependency> |
Chúng ta cũng cần khai báo slf4j-simple dependency để làm việc với Javalin .
Giống như các ứng dụng Spring Boot, chúng ta có thể chạy các ứng dụng Javalin sử dụng class với phương thức main(). Mình sẽ tạo một class với phương thức main() như sau:
1 2 3 4 5 6 7 8 9 |
package com.huongdanjava.javalin; public class JavalinHelloworld { public static void main(String[] args) { } } |
Để làm việc với Javalin, điều đầu tiên các bạn cần phải làm là tạo một instance của class Javalin:
1 |
Javalin javalin = Javalin.create(); |
Đối tượng này sẽ được tạo cùng mới một web server và sau đó chúng ta sẽ thêm phần handler vào web server này để nó có thể handle request từ người dùng.
Các bạn có thể set port cho web server:
1 |
javalin.port(8080); |
Nếu các bạn không làm điều này, port random sẽ được gán khi chúng ta chạy ứng dụng.
Rồi start nó:
1 |
javalin.start(); |
Các bạn có thể gộp lại tất cả các bước trên sử dụng phương thức start() của Javalin như sau:
1 |
Javalin javalin = Javalin.create().start(8080); |
Sau khi đã có đối tượng Javalin xong, các bạn có thể sử dụng các phương thức get(), post(), put(), delete() để hiện thực các RESTful API với GET, POST, PUT, DELETE. Tham số của các phương thức này sẽ là request URL là gì và một Functional Interface tên là Handler với nhiệm vụ hiện thực phần handle request từ người dùng.
Ví dụ, giờ mình cần hiện thực một GET request “/hello” cho ứng dụng của mình thì mình sẽ code như sau:
1 2 3 4 5 6 7 |
javalin.get("/hello", new Handler() { @Override public void handle(Context ctx) throws Exception { ctx.result("Hello World!"); } }); |
Đối tượng Context trong tham số của phương thức handle() sẽ chứa tất cả các thông tin về request và response của người dùng. Để set response trả về cho người dùng, chúng ta sử dụng phương thức result() của đối tượng Context các bạn nhé!
Đoạn code trên có thể viết gọn lại sử dụng Lambda Expression (các bạn cần chỉnh lại Java Compiler lên Java 1.8 để làm được điều này) như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
package com.huongdanjava.javalin; import io.javalin.Javalin; public class JavalinHelloworld { public static void main(String[] args) { Javalin javalin = Javalin.create().start(8080); javalin.get("/hello", ctx -> ctx.result("Hello World!")); } } |
Kết quả khi chạy ứng dụng và request tới địa chỉ :
Rất đơn giản phải không các bạn? Chỉ với vài dòng code, chúng ta đã dựng lên được một RESTful Web Service rồi!