Expose SOAP Web Service sử dụng APIkit SOAP trong Mule 4

Mình đã giới thiệu với các bạn cách expose SOAP Web Service sử dụng APIkit SOAP trong Mule 3, APIkit SOAP trong Mule 4 có sự khác biệt, từ cách mà chúng ta bỏ tập tin .wsdl cho đến cách mà chúng ta build response để trả về cho người dùng. Cụ thể như thế nào? Chúng ta hãy cùng nhau tìm hiểu ở bài viết này các bạn nhé!

Đầu tiên, mình sẽ tạo mới một Mule project để làm ví dụ:

Expose SOAP Web Service sử dụng APIkit SOAP trong Mule 4

Mình sẽ sử dụng tập tin hello.wsdl có nội dung như sau để làm ví dụ:

Trong Mule 4, tất cả các tập tin resources nên nằm trong thư mục src/main/resources và đối với các tập tin định nghĩa các REST hoặc SOAP API, chúng nên nằm trong thư mục api sẵn có nên mình sẽ không bỏ tập tin hello.wsdl nằm trong thư mục src/main/wsdl như trong Mule 3 nữa:

Expose SOAP Web Service sử dụng APIkit SOAP trong Mule 4

Bây giờ chúng ta sẽ generate các Mule Flows từ tập tin .wsdl này các bạn nhé!



Tương tự như trong Mule 3, các bạn cũng right-click vào tập tin hello.wsdl sau đó chọn Mule rồi chọn “Generate Flows from WSDL”, cửa sổ sau cũng sẽ xuất hiện:

Expose SOAP Web Service sử dụng APIkit SOAP trong Mule 4

Các bạn cũng để mặc định rồi nhấn nút OK như trong Mule 3 nhé!
Khi đó, các bạn cũng sẽ thấy Mule Flows được generate như sau:

Expose SOAP Web Service sử dụng APIkit SOAP trong Mule 4

Như các bạn thấy, tương tự như trong Mule 3, Anypoint Studio 7 cũng đã generate các Mule Flows sử dụng APIkit SOAP với một api-main Mule Flow sẽ tiếp nhận request từ client và mỗi operation của SOAP Web Service sẽ được generate thành một Mule Flow. Nhiệm vụ của chúng ta cũng chỉ là implement Mule Flow cho từng operation là xong.

Mặc định thì Mule Flow cho mỗi operation chỉ có một endpoint Transform Message. Nội dung của endpoint Transform Message này sẽ tuỳ thuộc vào operation của SOAP Web Service sẽ có nội dung khác nhau. Trong ví dụ này của mình, nội dung của endpoint Transform Message cho operation hello như sau:

Các bạn có thể remove endpoint Transform Message này để implement Mule Flow này theo cách của mình nhưng phải tuân thủ định nghĩa của tập tin WSDL nha các bạn.

Mình sẽ edit endpoint Transform Message của operation hello để build SOAP response message return về cho client với nội dung như sau:

Như các bạn thấy, khác với Mule 3, phần <Body> và phần <Header> của SOAP response message trong Mule 4 sẽ được convert từ nội dung của Payload chứ không còn tách biệt nữa. Và khi client request tới, nội dung của SOAP message cũng được gói gọn trong Payload của Mule Message các bạn nhé!



Mặc định thì khi generate Mule Flows từ .wsdl file, phần HTTP Listener Connector sẽ có cấu hình mặc định như sau:

Expose SOAP Web Service sử dụng APIkit SOAP trong Mule 4

Global Element Properties:

Expose SOAP Web Service sử dụng APIkit SOAP trong Mule 4

Để đúng với định nghĩa của tập tin hello.wsdl, mình sẽ sửa lại giá trị của phần Path thành “/hello” như sau:

Expose SOAP Web Service sử dụng APIkit SOAP trong Mule 4

Đến đây là chúng ta đã hoàn thành một ví dụ đơn giản để expose SOAP Web Service sử dụng APIkit SOAP trong Mule 4 rồi đó các bạn!

Kết quả của ví dụ mình sẽ như sau:

Expose SOAP Web Service sử dụng APIkit SOAP trong Mule 4

Add Comment