```html
Günümüzde yazılımlar her zamankinden daha güçlü. Kullanıcılar için çok fazla bilgi ve işlevsellik sağlayabilirler. Uygulamaların giderek artan güçlü yetenekleriyle, bunların hepsinin nasıl başarıldığını hiç merak ettiniz mi?
Uygulama geliştirme geriye dönük bakıldığında sıklıkla görünen bir dosya türü WSDL dosyasıdır, peki nedir bu?
WSDL Dosyası Nedir?
WSDL (Web Services Description Language) dosyaları, farklı uygulamaların bir ağ üzerinden standart bir şekilde birbiriyle iletişim kurmasını sağlar. Web hizmeti sağlayıcılarını ve tüketicilerini birbirine bağlayarak, iki taraf arasında (ancak bunlarla sınırlı olmamak üzere) veri alışverişine izin verir.
WSDL dosyaları ayrıca, özellikle SOAP tabanlı web hizmetleri için, bir web hizmetinin yetenekleri hakkında bol miktarda açıklama sağlamasıyla da bilinir. WSDL dosyaları XML (eXtensible Markup Language) dilinde yazılır ve SOAP API'lerinin test edilmesi için hayati öneme sahiptir.
Daha da önemlisi, WSDL dosyaları, web hizmeti sağlayıcısı ile hizmet tüketicisi arasındaki resmi bir anlaşmanın tanımı nedeniyle önemlidir. WSDL dosyaları, hangi işlemlerin mevcut olduğunu, mesajların biçimini ve yapısını ve web hizmetini kullanırken gereken diğer önemli ayrıntıları gösterir.
Örneklerle WSDL Dosyalarının Yapısı
WSDL dosyaları, onu kullanmak için bilgi sağlayan temel bileşenlere sahiptir. Bu makale, bir hava durumu web hizmetini örnek olarak kullanarak, bir WSDL dosyasının bölümlerini XML dilinde gösterecektir.
Türler type
WSDL dosyaları type
bölümü, web hizmeti işlemlerinde kullanılacak veri türlerini tanımlamak için kullanılır.
<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>
Bu örnek, City
ve Weather
adları dahil olmak üzere, öğelerin yapısını string
türünde belirtir.
Mesaj message
message
bölümü, web hizmeti sağlayıcısı ile hizmet kullanıcısı arasında değiş tokuş edilen veri öğelerini tanımlar. Yukarıdaki örneklerde, GetWeatherRequest
ve GetWeatherResponse
mesaj adlarını görebilirsiniz.
<message name="GetWeatherRequest">
<part name="City" element="tns:City"/>
</message>
<message name="GetWeatherResponse">
<part name="Weather" element="tns:Weather"/>
</message>
Burada, GetWeatherRequest
ve GetWeatherResponse
mesajları, gönderilen veya alınan veri öğelerini belirten bir bölümle tanımlanır.
Port Türü portType
portType
bölümü, GetWeather
işlemi gibi, web hizmeti tarafından gerçekleştirilebilen bir dizi işlemi tanımlar. Hizmet için soyut arayüzü tanımlar, işlemleri girişleri tns:GetWeatherRequest
ve çıkışları tns:GetWeatherResponse
mesajlarıyla birlikte listeler.
<portType name="WeatherServicePortType">
<operation name="GetWeather">
<input message="tns:GetWeatherRequest"/>
<output message="tns:GetWeatherResponse"/>
</operation>
</portType>
Yukarıdaki örnek, WeatherServicePortType
tanımlı bir işlem GetWeather
'ı, belirtilen giriş ve çıkış mesajlarıyla gösterir.
Bağlama binding
binding
bölümü, portType
içinde tanımlanan soyut işlemlerin iletişim için somut bir protokole nasıl eşlendiğini belirtir. Mesaj biçimi ve protokol (örneğin, SOAP) gibi ayrıntıları tanımlar.
<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>
Bu örnekte, WeatherServiceSoapBinding
, mesaj biçimi ve taşıma hakkında ayrıntıları belirterek, bağlama protokolü olarak SOAP ile tanımlanır.
Port port
port
bölümü, web hizmetine erişilebilecek ağ adresini belirtir.
<service name="WeatherService">
<port name="WeatherServicePort" binding="tns:WeatherServiceSoapBinding">
<soap:address location="http://example.com/weather/service"/>
</port>
</service>
Burada, WeatherService
, SOAP bağlamasını kullanan WeatherServicePort
ile tanımlanır ve adresi http://example.com/weather/service
olarak belirtilir.
WSDL Dosyalarına Örnekler
Basit Hava Durumu Web Hizmeti WSDL Dosyası Örneği
Önceki bölümde sağlanan farklı temel bileşen kod parçacıklarını derleyerek, bunları bir araya getirebilir ve basit bir hava durumu web hizmeti WSDL dosyası oluşturabiliriz.
<?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>
Bu basit hava durumu web hizmeti örneğinde, şunlar gözlemlenebilir:
- Web hizmeti,
http://example.com/weather
ad alanı altında çalışır. - İki basit veri türü tanımlar:
City
veWeather
. GetWeather
işlemi için giriş ve çıkış verilerini belirten iki mesaj vardır:GetWeatherRequest
veGetWeatherResponse
.WeatherServicePortType
port türü,GetWeather
işlemini tanımlar.WeatherServiceSoapBinding
, iletişimin belirli bir stil ve taşıma ile SOAP kullanacağını belirtir.WeatherService
hizmeti, SOAP bağlamasını kullananWeatherServicePort
adlı bir porta sahiptir ve adresihttp://example.com/weather/service
'dir.
Karmaşık E-Ticaret Web Hizmeti WSDL Dosyası Örneği
İşte birden fazla işlem, veri türü ve özellik içeren daha karmaşık bir e-ticaret web hizmeti WSDL dosyası örneği.
?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>
Bu karmaşık e-ticaret web hizmeti örneğinde, şunlar gözlemlenebilir:
- Karmaşık veri türleri
Product
veOrder
, iç içe öğeler (ProductID
,ProductName
vePrice
gibi) ve dizilerle tanımlanır. ECommerceServicePortType
içinde birden fazla işlemGetProduct
vePlaceOrder
tanımlanır.GetProductRequest
,GetProductResponse
,PlaceOrderRequest
,PlaceOrderResponse
mesajları, her işlem için giriş ve çıkış verilerini belirterek tanımlanır.- SOAP bağlaması
ECommerceServiceSoapBinding
, SOAP kullanılarak iletişim için biçimlendirme ayrıntılarını belirtir. ECommerceService
hizmeti, SOAP bağlamasını kullananECommerceServicePort
adlı bir porta sahiptir ve adresihttp://example.com/ecommerce/service
olarak belirtilir.
Apidog Kullanarak WSDL Dosyalarını Düzenleme
WSDL dosyaları yazılım geliştirme sahnesinde nispeten yaygın olduğundan, kendiniz bir tane düzenlemeniz veya oluşturmanız gerekebilir. Orada birçok API platformu varken, Apidog mükemmel bir seçimdir.
Apidog, geliştiricilerin, web hizmeti sağlayıcılarının ve her geçmişten web hizmeti kullanıcılarının diğer API platformlarından Apidog'a sorunsuz bir geçiş yapmasını sağlar.
Neyse ki, Apidog ayrıca WSDL dosyası içe aktarımını da kapsar! Denemek isterseniz, aşağıdaki düğmeleri kullanarak Apidog'u indirdiğinizden emin olun.
Girdikten sonra oturum açmayı ve yeni bir proje başlatmayı unutmayın. Yardıma ihtiyacınız olursa, Apidog'un Yardım Belgelerine göz atın.
SOAP API'nizi Bir WSDL Dosyasından Apidog'a İçe Aktarma

Yeni bir proje açtıktan sonra, Apidog penceresinin sol tarafında bulunan dikey araç çubuğundaki "Ayarlar" düğmesine tıklayın. Ardından, o sırayla Ok 2 ve Ok 3'e tıklayın.
Apidog'da SOAP API'sini Kolayca Test Etme

WSDL dosyasını başarıyla içe aktardıysanız, ekranın sol tarafında, Ok 1 etrafında gösterildiği gibi adını görmelisiniz.
WSDL dosyasını düzenlemeye başlamak için, artan sırada Ok 2'den 4'e tıklayın ve hazırsınız!
Sonuç
XML (eXtensible Markup Language) tabanlı WSDL dosyalarıyla, anlamak biraz daha kolaydır. WSDL dosyaları, web hizmetinin açıklamaları ve işlevsellikleri ne kadar spesifik olduğuna bağlı olarak karmaşıklıkta değişiklik gösterebilir.
```