JSON Formatı
HTTP Metodları
OpenAPI Desteği
Esnek Yapılandırma
REST API Proxy Oluşturma Yöntemleri
REST API Proxy oluşturmak için birkaç yöntem mevcuttur:OpenAPI/Swagger Dosyasından Import
OpenAPI/Swagger Dosyasından Import
Manuel Oluşturma
Manuel Oluşturma
Mevcut API Proxy'den Kopyalama
Mevcut API Proxy'den Kopyalama
SOAP Web Servisinden REST API Proxy Oluşturma
SOAP Web Servisinden REST API Proxy Oluşturma
OpenAPI/Swagger Dosyasından Import
API Proxy Oluşturma Sayfasına Gidin
OpenAPI Dosyasını Yükleyin
Yöntem 1: URL'den Yükleme
Yöntem 1: URL'den Yükleme
https://petstore.swagger.io/v2/swagger.json) ve Parse butonuna tıklanır. Dosya parse edilir ve API bilgileri görüntülenir.Yöntem 2: Dosya Yükleme
Yöntem 2: Dosya Yükleme
Yöntem 3: Metin Olarak Yapıştırma
Yöntem 3: Metin Olarak Yapıştırma
API Bilgilerini Kontrol Edin
API Adı
Versiyon
Base URL
Endpoint'ler
Şemalar
Routing Yapılandırması
Client Route (Relative Path)
Client Route (Relative Path)
Upstream Target (Backend Address)
Upstream Target (Backend Address)
Tek Backend
Dinamik Backend
servers veya host bilgisinden otomatik olarak alınır.Örnek:API Proxy'yi Kaydedin
Desteklenen OpenAPI Versiyonları
Apinizer, aşağıdaki OpenAPI versiyonlarını destekler:- OpenAPI 2.0 (Swagger 2.0): Tam destek
- OpenAPI 3.0: Tam destek
- OpenAPI 3.1: Tam destek
OpenAPI 2.0 Özellikleri
swaggeralanı:"2.0"değerihost,basePath,schemesalanlarıpathsvedefinitionsyapısıparametersveresponsestanımları
OpenAPI 3.0/3.1 Özellikleri
openapialanı:"3.0.0"veya"3.1.0"değeriserversarray’ipathsvecomponentsyapısırequestBodyveresponsestanımlarısecuritySchemesvesecuritytanımları
Import Sonrası Yapılandırma
API Proxy oluşturulduktan sonra, aşağıdaki yapılandırmalar yapılabilir:HTTP Routing Yapılandırması
Politikalar Ekleme
Test Etme
Yükleme ve Sürüm
Yaygın Senaryolar
Senaryo 1: Public API'yi Proxy Etme
Senaryo 1: Public API'yi Proxy Etme
OpenAPI URL'sini Kullanın
Relative Path Belirleyin
/petstoreProxy).Upstream Target Ayarlayın
Kaydedin ve Deploy Edin
Senaryo 2: Internal API'yi Expose Etme
Senaryo 2: Internal API'yi Expose Etme
OpenAPI Dosyasını Yükleyin
Relative Path Belirleyin
Upstream Target Ayarlayın
Güvenlik Politikaları Ekleyin
Kaydedin ve Deploy Edin
Senaryo 3: API Versiyonlama
Senaryo 3: API Versiyonlama
Her Versiyon İçin Ayrı OpenAPI Dosyası
Farklı Relative Path'ler
/api/v1, /api/v2).Ayrı Politikalar
Geçiş Stratejisi
En İyi Uygulamalar
OpenAPI Dosyası Kalitesi
Relative Path Stratejisi
/{servis-adı}/{versiyon}Backend Adresi
Güvenlik Politikaları
Sorun Giderme
Import Hatası
Import Hatası
- OpenAPI dosyasının geçerli JSON veya YAML formatında olduğundan emin olun.
- OpenAPI versiyonunun desteklendiğinden emin olun.
- URL erişilebilirliğini kontrol edin.
- Dosya boyutunun limit içinde olduğundan emin olun.
Endpoint'ler Görünmüyor
Endpoint'ler Görünmüyor
- OpenAPI dosyasında
pathsalanının doğru tanımlandığından emin olun. - Endpoint’lerin
pathsaltında doğru şekilde tanımlandığını kontrol edin.
Routing Hatası
Routing Hatası
- Upstream Target adresinin doğru olduğundan emin olun.
- Backend API’nin erişilebilir olduğunu kontrol edin.
- HTTP Routing yapılandırmasını kontrol edin.
SOAP Web Servisinden REST API Proxy Oluşturma
SOAP protokolü ile geliştirilmiş bir Web Servisin REST olarak açılması talebi özellikle, var olan servislerin yeni geliştirilen mobil uygulamalar ya da JavaScript tabanlı Web uygulamaları tarafından kullanılması gibi durumlarda sıklıkla ortaya çıkmaktadır. Var olan servisin REST ile yeniden yazılması ya da metotlarını taklit eden yeni bir REST API geliştirilmesi seçenekleri zaman ve maliyet açısından etkin çözümler değildir. Apinizer, SOAP Web servislerin REST olarak açılmasını ve bunun için gerekli bütün dönüşümlerin konfigürasyonla yapılabilmesini sağlar.SOAP Web Servisten REST Tipinde API Proxy Oluşturma
WSDL Dosyasını Yükleyin

Protokol Dönüşümünü Seçin

Metot Dönüşüm Ayarları
API Proxy oluşturulduktan sonra, istenirse metotların istek ve yanıt mesajları için REST - SOAP mesaj yapıları arasında nasıl dönüşüm yapılacağı özelleştirilebilir. Bunun için API Proxy’nin Geliştirme (Development) sekmesine gidilir. Sol taraftaki metot listesinde Hepsi (All) seçiliyken, orta bölümde üstte istek ve altta yanıt mesajlarının dönüşüm ayarlarını açan simgeler görünür.


Dönüşüm Seçenekleri
Bir SOAP Servis istemcilere REST olarak açıldığı zaman istek ve yanıt mesajlarının dönüştürülmesi gerekir. İstemciden gelen JSON mesaj SOAP servise gönderilmeden önce XML mesajına, SOAP servisin döndürdüğü XML mesaj ise istemciye gönderilmeden önce JSON mesajına dönüştürülmelidir. Bu dönüşümün yapılabilmesi için çeşitli seçenekler bulunmaktadır:Jackson Transformation
JsonML Transformation
Template Message
İstek Mesajları Dönüşüm Seçenekleri
Bu bölümde istek mesajlarının dönüşüm seçeneklerinin detayları anlatılmaktadır.Jackson Dönüşümü Kullan (Use Jackson Transformation)

| Alan | Açıklama |
|---|---|
| NULL değerleri görmezden gel (Ignore fields with NULL) | İşaretlenirse, Backend API’ye gönderilecek XML mesajın içine, istekte gelen JSON mesajdaki NULL değerleri XML Element olarak eklenmez. |
| Boş değerleri görmezden gel (Ignore EMPTY fields) | İşaretlenirse, Backend API’ye gönderilecek XML mesajın içine, istekte gelen JSON mesajdaki boş değerler XML Element olarak eklenmez. |
| NULL değerler için xsi:nil=“true” kullan (Use xsi:nil=“true” for NULL values) | İşaretlenirse, Backend API’ye gönderilecek XML mesajın içine, istekte gelen JSON mesajdaki NULL değerleri için xsi:nil=“true” niteliği kullanılır. Aksi taktirde XML mesajın içine ilgili değer için boş eleman eklenir. Değerinin aktifleştirilmesi, json mesajında null olarak gönderilen değerin xml’e dönüştürülürken xsi:nil=“true” alanı eklenerek iletilmesini sağlar. |
| Hedef XPath (Target XPath) | Gelen JSON mesajı XML’e dönüştürüldükten sonra elde edilen XML’in, SOAP servisin beklediği XML mesajın içinde nereye koyulacağını belirtir. |
| Alt Elemanları Değiştir (Replace Children) | Seçenek işaretlenirse, Target XPath’in çıktı öğesinin alt öğeleri silinerek JSON’dan dönüştürülen kısım bunların yerine eklenir. Aksi takdirde eleman tamamen değiştirilir. |
| Dizi olan elemanlar (Paths for Arrays within message) | JSON mesajın içinde hangi bölümlerin array olarak yorumlanması gerektiğini belirtir. Her bir Path, Hedef XPath’in seviyesinden (Hedef XPath verilmemişse en üst seviyeden) başlayarak ve seviyeler arasına # işareti koyularak yazılır. Örnek: “envelope#body#abc” ifadesi, “envelope” içindeki, “body“‘nin içindeki “abc” elemanının array olarak işleme alınacağını belirtir. Array İçinde Array Olduğu Zaman: Array içinde array olması durumunda ve bazı objeler bazen array bazen tekil şekilde geliyorsa, en dıştaki Array’in pathinden başlanarak yazılır ve alttaki objeye inerken array olan ifadelerden sonra #* ifadesi eklenmesi gerekir. Örneğin abc elementi array ve içinde def elementi array olarak yer alıyorsa “envelope#body#abc, envelope#body#abc#*#def” sırasıyla yazılmalıdır. |
| İstek Verisi Düzenlemesi (Request Data Manipulation) | Orijinal isteğin herhangi bir bölümü dönüştürülmüş isteğin belirtilen bir bölümüne aktarılabilir. Kaynak Değer/Değişken, orijinal istek mesajının hangi bölümünün aktarılacağını, Hedef Değer/Değişken ise Kaynak Değer/Değişken ile belirtilen bölümün dönüştürülmüş mesaj içinde nereye koyulacağını belirtir. |
| Örnek Mesaj Göster (Show Sample Message) | Ayarlara göre oluşan İstek Mesajı görüntülenebilir. |
| API Proxy’nin İstemciden Beklediği JSON İstek Mesajı | Backend API/Servisin beklediği XML İstek Mesajı |
|---|---|
{ "Add": { "intB": "?", "intA": "?" } } | <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/"> <soap:Header/> <soap:Body> <tem:Add> <tem:intA>?</tem:intA> <tem:intB>?</tem:intB> </tem:Add> </soap:Body> </soap:Envelope> |
JsonML Dönüşümü Kullan (Use JsonML Transformation)

| Alan | Açıklama |
|---|---|
| JSON Nesnesi kullan (Use JSON Object) | XML Elemanlarını JSON Nesneleri (JSON Objects) olarak dönüştürür. |
| JSON Dizisi kullan (Use JSON Array) | XML Elemanlarını JSON Dizisi (JSON Array) olarak dönüştürür. |
| İstek Verisi Düzenlemesi (Request Data Manipulation) | Orijinal isteğin herhangi bir bölümü dönüştürülmüş isteğin belirtilen bir bölümüne aktarılabilir. Kaynak Değer/Değişken, orijinal istek mesajının hangi bölümünün aktarılacağını, Hedef Değer/Değişken ise Kaynak Değer/Değişken ile belirtilen bölümün dönüştürülmüş mesaj içinde nereye koyulacağını belirtir. |
| Örnek Mesaj Göster (Show Sample Message) | Ayarlara göre oluşan İstek Mesajı görüntülenebilir. |
| Dönüşüm Tipi | API Proxy’nin İstemciden Beklediği JSON İstek Mesajı | Backend API/Servisin beklediği XML İstek Mesajı |
|---|---|---|
| JSON Object | { "soap:Envelope": { "xmlns:tem": "http://tempuri.org/", "soap:Header": "", "xmlns:soap": "http://www.w3.org/2003/05/soap-envelope", "soap:Body": { "tem:Add": { "tem:intA": "?", "tem:intB": "?" } } } } | <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/"> <soap:Header/> <soap:Body> <tem:Add> <tem:intA>?</tem:intA> <tem:intB>?</tem:intB> </tem:Add> </soap:Body> </soap:Envelope> |
| JSON Array | [ "soap:Envelope", { "xmlns:tem": "http://tempuri.org/", "xmlns:soap": "http://www.w3.org/2003/05/soap-envelope" }, [ "soap:Header" ], [ "soap:Body", [ "tem:Add", [ "tem:intA", "?" ], [ "tem:intB", "?" ] ] ] ] | <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/"> <soap:Header/> <soap:Body> <tem:Add> <tem:intA>?</tem:intA> <tem:intB>?</tem:intB> </tem:Add> </soap:Body> </soap:Envelope> |
Şablon Mesajını Kullan (Use Template Message)

| Alan | Açıklama |
|---|---|
| Şablon Message (Template Message) | Backend API/Servisin beklediği XML istek mesajı şablonu |
| İstek Veri Düzenlemesi (Request Data Manipulation) | Orijinal isteğin herhangi bir bölümü dönüştürülmüş isteğin belirtilen bir bölümüne aktarılabilir. Kaynak Değer/Değişken, orijinal istek mesajının hangi bölümünün aktarılacağını, Hedef Değer/Değişken ise Kaynak Değer/Değişken ile belirtilen bölümün dönüştürülmüş mesaj içinde nereye koyulacağını belirtir. |
Yanıt Mesajları Dönüşüm Seçenekleri
Bu bölümde yanıt mesajlarının dönüşüm seçeneklerinin detayları anlatılmaktadır.Jackson Dönüşümü Kullan (Use Jackson Transformation)

| Alan | Açıklama |
|---|---|
| NULL değerleri görmezden gel (Ignore fields with NULL) | Seçili ise, Backend API’den gelen XML mesajdaki, NULL alanlar JSON mesaja eklenmez. |
| Boş değerleri görmezden gel (Ignore EMPTY fields) | Seçili ise, Backend API’den gelen XML mesajdaki, NULL alanlar JSON mesaja boş değer olarak eklenmez. |
| Numerik değerleri String olarak yaz (Write Numbers as Strings) | Seçili ise numerik değerler JSON mesaja string olarak yazılır. |
| NULL değerler için xsi:nil=“true” kullan (Use xsi:nil=“true” for NULL values) | XML mesajda xsi:nil=“true” niteliği ile gelen verilerin json’a dönüştürülürken null olarak iletilmesini sağlar. |
| Kaynak XPath (Source XPath) | XML olarak dönen yanıt mesajının JSON’a dönüştürülecek olan kısmının XPath’ini girilir. |
| Elemanı Çöz (Unwrap Element) | İşaretlenirse, Kaynak XPath ile verilen elemanın içini (çocuklarını), işaretlenmezse elemanın kendisini (içindekilerle/çocuklarıyla beraber) dönüştürür. |
| Dizi olan elemanlar (Paths for Arrays within message) | JSON mesajın içinde hangi bölümlerin array olarak yorumlanması gerektiğini belirtir. Her bir Path, Hedef XPath’in seviyesinden (Hedef XPath verilmemişse en üst seviyeden) başlayarak ve seviyeler arasına # işareti koyularak yazılır. Örnek: “envelope#body#abc” ifadesi, “envelope” içindeki, “body“‘nin içindeki “abc” elemanının array olarak işleme alınacağını belirtir. Array İçinde Array Olduğu Zaman: Array içinde array olması durumunda ve bazı objeler bazen array bazen tekil şekilde geliyorsa, en dıştaki Array’in pathinden başlanarak yazılır ve alttaki objeye inerken array olan ifadelerden sonra #* ifadesi eklenmesi gerekir. Örneğin abc elementi array ve içinde def elementi array olarak yer alıyorsa “envelope#body#abc, envelope#body#abc#*#def” sırasıyla yazılmalıdır. |
| Başarı Durumunda Yanıt Verisi Düzenlemesi (Response Data Manipulation on Success) | Orijinal yanıtın herhangi bir bölümü dönüştürülmüş yanıtın belirtilen bir bölümüne aktarılabilir. Kaynak Değer/Değişken, orijinal yanıt mesajının hangi bölümünün aktarılacağını, Hedef Değer/Değişken ise Kaynak Değer/Değişken ile belirtilen bölümün dönüştürülmüş mesaj içinde nereye koyulacağını belirtir. Tanımlanan işlemler yalnızca Backend API/Servisin başarılı yanıt döndürmesi durumunda gerçekleştirilir. |
| Örnek Mesaj Göster (Show Sample Message) | Ayarlara göre oluşan Yanıt Mesajı görüntülenebilir. |
| Backend API/Servisin döndürdüğü XML Yanıt Mesajı | API Proxy’nin İstemciye Döndürdüğü JSON Yanıt Mesajı |
|---|---|
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <AddResponse xmlns="http://tempuri.org/"> <AddResult>?</AddResult> </AddResponse> </soap:Body> </soap:Envelope> | { "AddResponse" : { "AddResult" : "?" } } |
JsonML Dönüşümü kullan (Use JsonML Transformation)
| Alan | Açıklama |
|---|---|
| JSON Nesnesi kullan (Use JSON Object) | XML Elemanlarını JSON Nesneleri (JSON Objects) olarak dönüştürür. |
| JSON Dizisi kullan (Use JSON Array) | XML Elemanlarını JSON Dizisi (JSON Array) olarak dönüştürür. |
| Başarı Durumunda Yanıt Verisi Düzenlemesi (Response Data Manipulation on Success) | Orijinal yanıtın herhangi bir bölümü dönüştürülmüş yanıtın belirtilen bir bölümüne aktarılabilir. Kaynak Değer/Değişken, orijinal yanıt mesajının hangi bölümünün aktarılacağını, Hedef Değer/Değişken ise Kaynak Değer/Değişken ile belirtilen bölümün dönüştürülmüş mesaj içinde nereye koyulacağını belirtir. Tanımlanan işlemler yalnızca Backend API/Servisin başarılı yanıt döndürmesi durumunda gerçekleştirilir. |
| Örnek Mesaj Göster (Show Sample Message) | Ayarlara göre oluşan Yanıt Mesajı görüntülenebilir. |
| Dönüşüm Tipi | Backend API/Servisin döndürdüğü XML Yanıt Mesajı | API Proxy’nin İstemciye Döndürdüğü JSON Yanıt Mesajı |
|---|---|---|
| JSON Object | <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <AddResponse xmlns="http://tempuri.org/"> <AddResult>?</AddResult> </AddResponse> </soap:Body> </soap:Envelope> | { "soap:Envelope" : { "xmlns:xsd" : "http://www.w3.org/2001/XMLSchema", "xmlns:soap" : "http://www.w3.org/2003/05/soap-envelope", "xmlns:xsi" : "http://www.w3.org/2001/XMLSchema-instance", "soap:Body" : { "AddResponse" : { "xmlns" : "http://tempuri.org/", "AddResult" : "?" } } } } |
| JSON Array | <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <AddResponse xmlns="http://tempuri.org/"> <AddResult>?</AddResult> </AddResponse> </soap:Body> </soap:Envelope> | [ "soap:Envelope", { "xmlns:xsd": "http://www.w3.org/2001/XMLSchema", "xmlns:soap": "http://www.w3.org/2003/05/soap-envelope", "xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance" }, [ "soap:Body", [ "AddResponse", { "xmlns": "http://tempuri.org/" }, [ "AddResult", "3" ] ] ] ] |
Şablon Mesajını Kullan (Use Template Message)
| Alan | Açıklama |
|---|---|
| Şablon Message (Template Message) | İstemciye döndürülecek JSON yanıt mesajı |
| Başarı Durumunda Yanıt Verisi Düzenlemesi (Response Data Manipulation on Success) | Orijinal yanıtın herhangi bir bölümü dönüştürülmüş yanıtın belirtilen bir bölümüne aktarılabilir. Kaynak Değer/Değişken, orijinal yanıt mesajının hangi bölümünün aktarılacağını, Hedef Değer/Değişken ise Kaynak Değer/Değişken ile belirtilen bölümün dönüştürülmüş mesaj içinde nereye koyulacağını belirtir. Tanımlanan işlemler yalnızca Backend API/Servisin başarılı yanıt döndürmesi durumunda gerçekleştirilir. |

