Trong bài viết trước, mình đã giới thiệu với các bạn về RAML để định nghĩa các API cho RESTful Web Service. Còn APIkit Router là một chức năng của Mule ESB giúp chúng ta có thể tạo mới RESTful Web Service từ một tập tin RAML. Cụ thể như thế nào? Chúng ta hãy cùng nhau tìm hiểu trong bài viết này các bạn nhé!
Ví dụ, mình có một tập tin RAML định nghĩa các API cho một hệ thống quản lý sinh viên 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 |
#%RAML 1.0 baseUri: https://localhost:8081/api title: Student Information Management System version: 1.0 /student/{ID}: uriParameters: ID: description: | ID of the Student type: string example: "1" get: responses: 200: body: application/json: example: | {"ID":1, "code": "001","name": "Khanh"} delete: responses: 200: body: application/json: example: | {"message": "Student deleted!"} /students: get: responses: 200: body: application/json: example: | [{"ID":1, "code": "001","name": "Khanh"}, {"ID":2, "code": "002","name": "Quan"}] |
Dựa vào tập tin RAML trên, các bạn có thể thấy hệ thống quản lý sinh viên của mình cho phép người dùng có thể truy vấn danh sách tất cả sinh viên, tìm sinh viên theo ID hay xoá sinh viên theo ID.
OK, giờ chúng ta đi vào chủ để chính của bài viết này các bạn nhé!
Đầu tiên, mình sẽ tạo mới Mule project sử dụng tập tin RAML này.
Trong Anypoint Studio IDE, các bạn hãy vào File chọn New rồi chọn Mule Project:
Hãy điền thông tin về Project Name như bình thường các bạn nhé.
Trong cửa sổ này, các bạn cũng có thể thấy, chúng ta có một section tên là APIkit Settings. Đây là section cho phép chúng ta có thể sử dụng tập tin RAML với APIkit Router của Mule ESB để tạo ra các Mule Flow cho từng request URL mà chúng ta đã định nghĩa trong tập tin RAML. Xí nữa thôi các bạn sẽ thấy được cái mình vừa nói, còn bây giờ các bạn hãy check vào ô Add APIkit components rồi chọn tập tin RAML như sau:
Chọn tập tin RAML rồi nhấn vào nút Finish để hoàn thành việc tạo mới Mule project nha các bạn.
Kết quả của mình như sau:
Các bạn có thể thấy trong thư mục src/main/api là tập tin RAML mà chúng ta vừa sử dụng để tạo mới project.
Bây giờ, các bạn mở tập tin Mule Configuration File student.xml, các bạn sẽ thấy Mule ESB đã tạo mới cho chúng ta các Mule Flow sử dụng APIkit Router dựa vào định nghĩa của tập tin RAML một cách tự động. 3 request URL mà mình đã định nghĩa trong tập tin RAML đã được generate thành 3 Mule Flow như sau:
Nhiệm vụ của chúng ta bây giờ chỉ là thêm phần xử lý để hoàn thành các API của chúng ta. Mặc định, Mule sẽ response lại phần response body mà chúng ta đã định nghĩa trong phần example cho mỗi request URL trong tập tin RAML các bạn nhé! Các bạn có thể xem endpoint Set Payload để thấy rõ điều này. Ở đây, mình sẽ không hiện thực thêm phần xử lý cho mỗi request URL, các bạn có thể thêm phần xử lý theo nhu cầu của mình nhé!
Ngoài ra, APIkit Router của Mule ESB còn hỗ trợ generate các HTTP status code cho chúng ta trong trường hợp có lỗi gì đó trong quá trình xử lý cho các request URL của chúng ta.
Các bạn cũng tuỳ theo nhu cầu của mình thì xử lý cho phù hợp nhé!
Bây giờ, nếu các bạn chạy project này, các bạn sẽ thấy một tab APIkit Console được mở trong Anypoint Studio như sau:
Đây là chức năng của Mule ESB trong Anypoint Studio cho phép chúng ta trải nghiệm các API mà chúng ta đã định nghĩa trong tập tin RAML. Các bạn có thể thấy, tất cả các API được hiển thị ở đây, các bạn có thể sử dụng nó để kiểm tra xem các API mà chúng ta định nghĩa trong tập tin RAML có đúng với nhu cầu của các bạn không? Để từ đó, các bạn có những điều chỉnh cho phù hợp.