Phần mềm ngày nay mạnh mẽ hơn bao giờ hết. Chúng có thể cung cấp rất nhiều thông tin và chức năng cho người dùng. Với khả năng ngày càng mạnh mẽ của các ứng dụng, bạn có bao giờ tự hỏi làm thế nào tất cả những điều đó có thể đạt được không?
Một loại tệp thường xuất hiện trong quá trình phát triển ứng dụng là tệp WSDL, nhưng nó là gì?
Tệp WSDL là gì?
WSDL (Ngôn ngữ mô tả dịch vụ web) cho phép các ứng dụng khác nhau giao tiếp với nhau qua một mạng lưới theo cách chuẩn hóa. Nó kết nối nhà cung cấp và người tiêu dùng dịch vụ web, cho phép trao đổi dữ liệu giữa, nhưng không giới hạn ở, hai bên.
Các tệp WSDL cũng nổi tiếng về việc cung cấp mô tả đầy đủ về khả năng của một dịch vụ web, đặc biệt là cho các dịch vụ web dựa trên SOAP. Các tệp WSDL được viết bằng ngôn ngữ XML (Ngôn ngữ đánh dấu mở rộng) và rất quan trọng cho việc kiểm tra API SOAP.
Quan trọng hơn, các tệp WSDL có nghĩa là vì định nghĩa của một thỏa thuận chính thức giữa nhà cung cấp dịch vụ web và người tiêu dùng dịch vụ. Các tệp WSDL cho thấy những hoạt động nào có sẵn, định dạng và cấu trúc của thông điệp, cùng với các chi tiết quan trọng khác cần thiết khi sử dụng dịch vụ web.
Cấu trúc của các tệp WSDL với ví dụ
Các tệp WSDL có các thành phần chính cung cấp thông tin cho việc sử dụng chúng. Bài viết này sẽ minh họa các phần của một tệp WSDL bằng ngôn ngữ XML, sử dụng một dịch vụ web thời tiết làm ví dụ.
Các loại type
Phần type
của các tệp WSDL được sử dụng để định nghĩa các kiểu dữ liệu sẽ được sử dụng trong các hoạt động của dịch vụ web.
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.com/weather">
<element name="City" type="string"/>
<element name="Weather" type="string"/>
</schema>
</types>
Ví dụ này xác định cấu trúc của các phần tử, bao gồm tên của chúng City
và Weather
đều có kiểu string
.
Thông điệp message
Phần message
định nghĩa các phần tử dữ liệu đang được trao đổi giữa nhà cung cấp dịch vụ web và người sử dụng dịch vụ. Trong các ví dụ ở trên, bạn có thể thấy tên thông điệp GetWeatherRequest
và GetWeatherResponse
.
<message name="GetWeatherRequest">
<part name="City" element="tns:City"/>
</message>
<message name="GetWeatherResponse">
<part name="Weather" element="tns:Weather"/>
</message>
Ở đây, các thông điệp GetWeatherRequest
và GetWeatherResponse
được định nghĩa với một phần chỉ định các phần tử dữ liệu đang được gửi hoặc nhận.
Loại cổng portType
Phần portType
mô tả một tập hợp các hoạt động có thể được thực hiện bởi dịch vụ web, chẳng hạn như tên hoạt động GetWeather
. Nó định nghĩa giao diện trừu tượng cho dịch vụ, liệt kê các hoạt động cùng với thông điệp đầu vào tns:GetWeatherRequest
và đầu ra tns:GetWeatherResponse
.
<portType name="WeatherServicePortType">
<operation name="GetWeather">
<input message="tns:GetWeatherRequest"/>
<output message="tns:GetWeatherResponse"/>
</operation>
</portType>
Ví dụ ở trên cho thấy WeatherServicePortType
có một hoạt động đã được định nghĩa là GetWeather
với các thông điệp đầu vào và đầu ra được chỉ định.
Ràng buộc binding
Phần binding
chỉ định cách các hoạt động trừu tượng được định nghĩa trong portType
được ánh xạ tới một giao thức cụ thể để giao tiếp. Nó định nghĩa các chi tiết như định dạng thông điệp và giao thức (ví dụ: SOAP).
<binding name="WeatherServiceSoapBinding" type="tns:WeatherServicePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetWeather">
<soap:operation soapAction="http://example.com/weather/GetWeather"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
Trong ví dụ này, WeatherServiceSoapBinding
được định nghĩa với SOAP làm giao thức ràng buộc, chỉ định các chi tiết về định dạng thông điệp và phương thức truyền tải.
Cổng port
Phần port
chỉ định địa chỉ mạng nơi dịch vụ web có thể được truy cập.
<service name="WeatherService">
<port name="WeatherServicePort" binding="tns:WeatherServiceSoapBinding">
<soap:address location="http://example.com/weather/service"/>
</port>
</service>
Ở đây, WeatherService
được định nghĩa với WeatherServicePort
sử dụng ràng buộc SOAP, và địa chỉ của nó được chỉ định là http://example.com/weather/service
.
Ví dụ về các tệp WSDL
Ví dụ về tệp WSDL dịch vụ web thời tiết đơn giản
Kết hợp các đoạn mã thành phần chính khác nhau được cung cấp trong phần trước, chúng ta có thể kết hợp chúng lại với nhau và tạo một tệp WSDL dịch vụ web thời tiết đơn giản.
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://example.com/weather"
targetNamespace="http://example.com/weather">
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.com/weather">
<element name="City" type="string"/>
<element name="Weather" type="string"/>
</schema>
</types>
<message name="GetWeatherRequest">
<part name="City" element="tns:City"/>
</message>
<message name="GetWeatherResponse">
<part name="Weather" element="tns:Weather"/>
</message>
<portType name="WeatherServicePortType">
<operation name="GetWeather">
<input message="tns:GetWeatherRequest"/>
<output message="tns:GetWeatherResponse"/>
</operation>
</portType>
<binding name="WeatherServiceSoapBinding" type="tns:WeatherServicePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetWeather">
<soap:operation soapAction="http://example.com/weather/GetWeather"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="WeatherService">
<port name="WeatherServicePort" binding="tns:WeatherServiceSoapBinding">
<soap:address location="http://example.com/weather/service"/>
</port>
</service>
</definitions>
Trong ví dụ dịch vụ web thời tiết đơn giản này, có thể thấy rằng:
- Dịch vụ web hoạt động dưới không gian tên
http://example.com/weather
. - Nó định nghĩa hai kiểu dữ liệu đơn giản:
City
vàWeather
. - Có hai thông điệp,
GetWeatherRequest
vàGetWeatherResponse
, chỉ định dữ liệu đầu vào và đầu ra cho hoạt độngGetWeather
. - Loại cổng
WeatherServicePortType
định nghĩa hoạt độngGetWeather
. - Ràng buộc
WeatherServiceSoapBinding
chỉ định rằng giao tiếp sẽ sử dụng SOAP với một kiểu và phương thức truyền tải cụ thể. - Dịch vụ
WeatherService
có một cổng tên làWeatherServicePort
sử dụng ràng buộc SOAP, và địa chỉ của nó được chỉ định làhttp://example.com/weather/service
.
Ví dụ về tệp WSDL dịch vụ web thương mại điện tử phức tạp
Đây là một ví dụ phức tạp về tệp WSDL dịch vụ web thương mại điện tử bao gồm nhiều hoạt động, kiểu dữ liệu và tính năng.
?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://example.com/ecommerce"
targetNamespace="http://example.com/ecommerce">
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.com/ecommerce">
<element name="Product">
<complexType>
<sequence>
<element name="ProductId" type="string"/>
<element name="ProductName" type="string"/>
<element name="Price" type="decimal"/>
</sequence>
</complexType>
</element>
<element name="Order">
<complexType>
<sequence>
<element name="OrderId" type="string"/>
<element name="CustomerName" type="string"/>
<element name="Products" type="tns:Product" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
</schema>
</types>
<message name="GetProductRequest">
<part name="ProductId" element="tns:ProductId"/>
</message>
<message name="GetProductResponse">
<part name="Product" element="tns:Product"/>
</message>
<message name="PlaceOrderRequest">
<part name="Order" element="tns:Order"/>
</message>
<message name="PlaceOrderResponse">
<part name="Confirmation" type="string"/>
</message>
<portType name="ECommerceServicePortType">
<operation name="GetProduct">
<input message="tns:GetProductRequest"/>
<output message="tns:GetProductResponse"/>
</operation>
<operation name="PlaceOrder">
<input message="tns:PlaceOrderRequest"/>
<output message="tns:PlaceOrderResponse"/>
</operation>
</portType>
<binding name="ECommerceServiceSoapBinding" type="tns:ECommerceServicePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetProduct">
<soap:operation soapAction="http://example.com/ecommerce/GetProduct"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="PlaceOrder">
<soap:operation soapAction="http://example.com/ecommerce/PlaceOrder"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="ECommerceService">
<port name="ECommerceServicePort" binding="tns:ECommerceServiceSoapBinding">
<soap:address location="http://example.com/ecommerce/service"/>
</port>
</service>
</definitions>
Trong ví dụ dịch vụ web thương mại điện tử phức tạp này, có thể thấy rằng:
- Các kiểu dữ liệu phức tạp
Product
vàOrder
được định nghĩa với các phần tử lồng nhau (nhưProductID
,ProductName
, vàPrice
) và các chuỗi. - Nhiều hoạt động
GetProduct
vàPlaceOrder
được định nghĩa trongECommerceServicePortType
. - Các thông điệp
GetProductRequest
,GetProductResponse
,PlaceOrderRequest
,PlaceOrderResponse
được định nghĩa cho mỗi hoạt động, chỉ định dữ liệu đầu vào và đầu ra. - Ràng buộc SOAP
ECommerceServiceSoapBinding
xác định các chi tiết định dạng để giao tiếp bằng cách sử dụng SOAP. - Dịch vụ
ECommerceService
có một cổng tên làECommerceServicePort
sử dụng ràng buộc SOAP, và địa chỉ của nó được chỉ định làhttp://example.com/ecommerce/service
.
Chỉnh sửa các tệp WSDL bằng Apidog
Vì các tệp WSDL tương đối phổ biến trong lĩnh vực phát triển phần mềm, bạn có thể cần phải chỉnh sửa hoặc tạo một cái cho riêng mình. Với hàng tấn nền tảng API ở ngoài kia, Apidog là một lựa chọn tuyệt vời.
Apidog cho phép các nhà phát triển, nhà cung cấp dịch vụ web, và người sử dụng dịch vụ web từ bất kỳ nền tảng nào có thể chuyển đổi liền mạch từ các nền tảng API khác sang Apidog.
May mắn thay, Apidog cũng hỗ trợ nhập khẩu tệp WSDL! Nếu bạn quan tâm đến việc thử nghiệm, hãy đảm bảo tải xuống Apidog bằng các nút bên dưới.
Đừng quên đăng nhập và bắt đầu một dự án mới ngay khi bạn vào. Nếu bạn cần giúp đỡ, hãy xem qua Tài liệu trợ giúp của Apidog.
Nhập API SOAP của bạn lên Apidog từ tệp WSDL

Khi bạn đã mở một dự án mới, hãy nhấp vào nút "Cài đặt" trên thanh công cụ dọc nằm ở bên trái của cửa sổ Apidog. Sau đó, nhấp vào Mũi tên 2 và Mũi tên 3 theo thứ tự đó.
Kiểm tra API SOAP dễ dàng trên Apidog

Nếu bạn đã nhập thành công tệp WSDL, bạn sẽ thấy tên của nó ở bên trái màn hình, như được hiển thị quanh Mũi tên 1.
Để bắt đầu chỉnh sửa tệp WSDL, hãy nhấp vào các mũi tên 2 đến 4 theo thứ tự tăng dần, và bạn đã sẵn sàng!
Kết luận
Với các tệp WSDL dựa trên XML (Ngôn ngữ đánh dấu mở rộng), nó dễ hiểu hơn một chút. Các tệp WSDL có thể khác nhau về độ phức tạp tùy thuộc vào mức độ cụ thể của các mô tả và chức năng của dịch vụ web.