Chúng ta đã tìm hiểu cách handle một request trong Javalin như thế nào rồi, trong bài viết này, chúng ta sẽ tiếp tục tìm hiểu về cách làm việc với response trong Javalin các bạn nhé!
Mình cũng tạo một Maven project để làm ví dụ như sau:
Javalin và SLF4J Simple 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> |
Để handle cho phần response, chúng ta sẽ sử dụng phương thức result() của đối tượng Context để làm điều này.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
package com.huongdanjava.javalin; import io.javalin.Context; import io.javalin.Handler; import io.javalin.Javalin; public class JavalinExample { public static void main(String[] args) { Javalin javalin = Javalin.create().start(8080); javalin.get("/example", new Handler() { public void handle(Context ctx) throws Exception { ctx.result("Hello World"); } }); } } |
Phương thức result() này cũng có nhiều phương thức overload giúp chúng ta có thể trả về String, Stream,… Và đặc biệt, nó cũng hỗ trợ asynchronous response với CompletableFuture như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
package com.huongdanjava.javalin; import java.util.concurrent.CompletableFuture; import java.util.function.Supplier; import io.javalin.Context; import io.javalin.Handler; import io.javalin.Javalin; public class JavalinExample { public static void main(String[] args) { Javalin javalin = Javalin.create().start(8080); javalin.get("/example", new Handler() { @Override public void handle(Context ctx) throws Exception { CompletableFuture<String> f = CompletableFuture.supplyAsync(new Supplier<String>() { @Override public String get() { return "Hello World"; } }); f.thenAccept(result -> { System.out.println(result); }); ctx.result(f); } }); } } |
Kết quả:
Nếu các bạn muốn trả về response là một chuỗi JSON thì hãy dùng phương thức json() của đối tượng Context.
Javalin sử dụng thư viện Jackson để làm điều này nên các bạn cần phải khai báo Jackson dependency cho nó:
1 2 3 4 5 |
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.8</version> </dependency> |
Ví dụ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
package com.huongdanjava.javalin; import io.javalin.Context; import io.javalin.Handler; import io.javalin.Javalin; public class JavalinExample { public static void main(String[] args) { Javalin javalin = Javalin.create().start(8080); javalin.get("/example", new Handler() { @Override public void handle(Context ctx) throws Exception { ctx.json("Hello World"); } }); } } |
Kết quả:
Để set HTTP status code cho phần response, chúng ta sẽ sử dụng phương thức status() với tham số là giá trị của status code mà các bạn muốn response các bạn nhé!
Ví dụ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
package com.huongdanjava.javalin; import org.eclipse.jetty.http.HttpStatus; import io.javalin.Context; import io.javalin.Handler; import io.javalin.Javalin; public class JavalinExample { public static void main(String[] args) { Javalin javalin = Javalin.create().start(8080); javalin.get("/example", new Handler() { @Override public void handle(Context ctx) throws Exception { ctx.json("Hello World"); ctx.status(HttpStatus.INTERNAL_SERVER_ERROR_500); } }); } } |
Kết quả: