Dạo gần đây vì nhu cầu của dự án, khách hàng muốn team mình code Java bằng framework Dropwizard. Qua mấy ngày tìm hiểu thì mình có một vài chia sẻ như sau :
Dropwizard là gì ? https://www.dropwizard.io/
Dropwizard is a Java framework for developing ops-friendly, high-performance, RESTful web services
Là một framework nhỏ gọn giúp chúng ta phát triển API một cách nhanh chóng và tiện lợi. Cùng với hiệu năng cao với các ứng dụng microservice.
Và lập trình viên chúng ta bao giờ cũng thế! Khi học một ngôn ngữ hoặc framwork mới, chúng ta sẽ làm một project example với cái chúng ta đang học.Mình cũng vậy, vậy nên hôm nay mình xin trình bày cách tạo một ứng dụng API đơn giản bằng Dropwizard.
Bao gồm tạo mới 1 User, xem danh sách User, xem thông tin một User, cập nhật User, và xóa User.
1. Tạo project maven
Đầu tiên mình sẽ tiến hành tạo một project maven.
Sau đấy mình thêm các dependency cần thiết nhưdropwizard
và lombok
:
2. Config
Tiến hành tạo class AppConfig
extends class Configuration
như sau:
Tạo file config.yml để config:
Và cuối cùng, chương trình nào cũng phải có hàm main đúng không ?
Mình tạo class MainApplication
chứa hàm main
để có thể chạy được server:
Vậy là đã đủ để mình có thể phát triển RestAPI với dropwizard!
Implement Resource
Mình sẽ tạo ra một Model
có tên là User
: (Mình có sử dụng lombok để không phải viết constructor, setter và getter)
Tiếp theo mình tạo UserResource
, (Resource ở dropwizard giống như controller trong Spring framework).
Trong UserResource này mình có đầy đủ 5 phương thức GET, POST, PUT và DELETE, đầy đủ cho một RestfulAPI
đơn giản :
Với dropwizard, mình phải tiến hành đăng ký resource mới tạo vào trong hàm run() ở class MainApplication
thì mới có thể gọi đến các đầu API mình vừa viết ở trong class resource
:
@Override
public void run(AppConfig configuration, Environment environment) {
environment.jersey().register(new UserResource());
}
Vậy là xong rồi !
Mình tiến hành test API với các curl sau:
Mặc dù Dropwizard
sinh ra để hỗ trợ để tạo ra các API, nhưng nó cũng hỗ trợ webview nếu chúng ta muốn. Trong bài sau, mình sẽ tiến hành cấu hình Dropwizard
với thymeleaf
để thêm giao diện cho webapp này!
MÌNH ĐÃ CẬP NHẬT PHẦN CONFIG để sử dụng thymeleaf với dropwizard ở đây ! https://viblo.asia/p/dropwizard-view-voi-thymeleaf-template-engine-63vKjv36K2R
Hẹn gặp lại!
SOURCE CODE MÌNH CÓ ĐỂ TẠI ĐÂY !!! https://github.com/tungpv-0974/example-dropwizard