En son kararlı sürüm için lütfen Mirket Geliştirici Dokümanı v4.9.x!

Groovy Request & Response Dönüşümü

REST to SOAP

Rest’ten Soap’a bir dönüşüm örneği yapalım. Örnek için senaryomuz şu şekilde, dışarda bir SOAP servisimiz olduğunu varsayalım. Biz SOAP servisine Rest bir Mirket apisi ile istek yapmaya çalışalım.

API Oluşturma

Tanım sekmesinde aşağıdaki bilgiler doldurulur:

Ad: Number to Dollars | REST to SOAP

Açıklama: Geçirilen sayının sıfır olmayan dolar tutarını döndüren, açık kaynak soap apisine istek & cevap dönüşümü kullanarak soap isteği atan rest bir mirket apisi. Kaynak: https://documenter.getpostman.com/view/8854915/Szf26WHn#2d448676-ccb9-44b6-87f6-4d311a

Durum: Aktif

Tip: REST

EndPoint: /number-to-dollars

Metot: POST

API Oluşturma
Figure 1. API Oluşturma

Yönlendirme sekmesine tıklanır ve Basit Yönlendirme seçilir.


Dönüşüm sekmesine tıklanır ve İstek Veri Dönüşümü tabında Groovy seçilir.

Bu adımda karşımıza çıkan örnek bir groovy kodu editörde gözükecek.

package com.mirket.gateway.groovy;
public class GroovyTransformationScriptImpl implements GroovyTransformationScript {
    public byte[] transform(byte[] input) {
        return input;
    }
}

Bu örnek kodu IDE üzerinde düzenleyerek REST request body’imi json’dan SOAP XML’ine dönüştüreceğim.

IDE üzerinde RequestTransformation adında bir groovy sınıfı oluşturuyorum. Hemen ardından static main metotumuzu tanımlıyoruz.

class RequestTransformation {
    static void main(String[] args) {

    }
}

Groovy kodunu IDE’de daha rahat test edebilmek adına main metodumun içerisine örnek bir json request body’imi tanımlıyorum.

String requestJson = '''{"num": 50}'''

Request body’imdeki num değerini almak için json’ı ayrıştırmam gerekiyor. Bunun için JsonSlurper tanımlıyorum. Daha sonrasında parseText metodu yardımı ile json’ını ayrıştırıyorum. Ayrıştırma sonucunda atadığım obje üzerinden num değerini çekiyorum.

JsonSlurper jsonSlurper = new JsonSlurper()
Object object = jsonSlurper.parseText(requestJson)
String num = object.getAt("num")

Gidiceğimiz SOAP Servisin request xml’i aşağıdaki şekilde.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <NumberToDollars xmlns="http://www.dataaccess.com/webservicesserver/">
      <dNum>100</dNum>
    </NumberToDollars>
  </soap:Body>
</soap:Envelope>

Json request’imizden aldığımız num değerini alıp, soap request xml’inde <dNum> tagları arasına ekliyoruz.

String soapRequest = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
        " <soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" +
        "   <soap:Body>\n" +
        "     <NumberToDollars xmlns=\"http://www.dataaccess.com/webservicesserver/\">\n" +
        "       <dNum>${num}</dNum>\n" +
        "     </NumberToDollars>\n" +
        "   </soap:Body>\n" +
        " </soap:Envelope>"

SOAP xml’imin düzgün oluşup oluşmadığını görmek için main metodumda consola yazdırıyorum.

println(soapRequest)

Main metodumu çalıştırdıktan sonra aşağıdaki gibi bir çıktının console’a çıktığını görüyorum.

> Task :RequestTransformation.main()
<?xml version="1.0" encoding="utf-8"?>
 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
     <NumberToDollars xmlns="http://www.dataaccess.com/webservicesserver/">
       <dNum>50</dNum>
     </NumberToDollars>
   </soap:Body>
 </soap:Envelope>

Sınıfımızın geliştirme sonucundaki tam hali aşağıda bulunuyor.

class RequestTransformation {
    static void main(String[] args) {
        String requestJson = '''{"num": 50}'''

        JsonSlurper jsonSlurper = new JsonSlurper()
        Object object = jsonSlurper.parseText(requestJson)
        String num = object.getAt("num")

        String soapRequest = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
                " <soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" +
                "   <soap:Body>\n" +
                "     <NumberToDollars xmlns=\"http://www.dataaccess.com/webservicesserver/\">\n" +
                "       <dNum>${num}</dNum>\n" +
                "     </NumberToDollars>\n" +
                "   </soap:Body>\n" +
                " </soap:Envelope>"

        println(soapRequest)
    }
}

Bu sınıfta yaptığımız transform’u api üzerine taşıyalım.

package com.mirket.gateway.groovy;
import groovy.json.JsonSlurper

public class GroovyTransformationScriptImpl implements GroovyTransformationScript {
   public byte[] transform(byte[] json) {
        JsonSlurper jsonSlurper = new JsonSlurper()
        Object object = jsonSlurper.parseText(new String(json))
        String num = object.getAt("num")

        String soapRequest = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
                "            <soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" +
                "              <soap:Body>\n" +
                "                <NumberToDollars xmlns=\"http://www.dataaccess.com/webservicesserver/\">\n" +
                "                  <dNum>${num}</dNum>\n" +
                "                </NumberToDollars>\n" +
                "              </soap:Body>\n" +
                "            </soap:Envelope>"
       return soapRequest.getBytes()
    }
}

IDE’de geliştirme kolaylığı olması açısından tanımladığımız requestJson ve console’a çıktı yazdırmak için kullandığımız println(soapRequest) metodunu kaldırıp soapRequest objemizi byte olarak dönüyoruz.


Cevap Veri Dönüşümü tabında Groovy seçilir.

Gittiğimiz SOAP servisin bize döndüğü cevap xml’ini json’a dönüştürmek için bir response transformation kodu yazalım.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <m:NumberToDollarsResponse xmlns:m="http://www.dataaccess.com/webservicesserver/">
            <m:NumberToDollarsResult>one hundred dollars</m:NumberToDollarsResult>
        </m:NumberToDollarsResponse>
    </soap:Body>
</soap:Envelope>

IDE üzerinde ResponseTransformation adında bir groovy sınıfı oluşturuyorum. Hemen ardından static main metotumuzu tanımlıyoruz.

class ResponseTransformation {
    static void main(String[] args) {

    }
}

Groovy kodunu IDE’de daha rahat test edebilmek adına main metodumun içerisine örnek bir soap response xml’imi tanımlıyorum.

byte[] input = new String("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
        "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" +
        "    <soap:Body>\n" +
        "        <m:NumberToDollarsResponse xmlns:m=\"http://www.dataaccess.com/webservicesserver/\">\n" +
        "            <m:NumberToDollarsResult>five hundred dollars</m:NumberToDollarsResult>\n" +
        "        </m:NumberToDollarsResponse>\n" +
        "    </soap:Body>\n" +
        "</soap:Envelope>").getBytes()

Response soap xml’inde NumberToDollarsResult tagları arasındaki result değerimizi alabilmek için bir pattern tanımlıyorum.

def numberToDollarsResultPattern = Pattern.compile("<m:NumberToDollarsResult>(.*?)</m:NumberToDollarsResult>")

Tanımladığımız pattern ile eşleşen değeri bize dönen bir metot yazıyorum.

static Object getValueByPattern(String input, Pattern pattern) {
    def matcher = pattern.matcher(input);
    if (matcher.find()) {
        return matcher.group(1)
    }
    return null
}

Yazdığımız metodu main mateodumuzda çağırıp, JsonOutput yardımı ile json response’umuzu oluşturuyorum.

def inputAsString = new String(input)
def result = getValueByPattern(inputAsString, numberToDollarsResultPattern)
def output = JsonOutput.toJson(results: result)

Json response’umuzun düzgün oluşup oluşmadığını görmek için main metodumda consola yazdırıyorum.

println(output)

Main metodumu çalıştırdıktan sonra aşağıdaki gibi bir çıktının console’a çıktığını görüyorum.

> Task :ResponseTransformation.main()
{"results":"five hundred dollars"}

Sınıfımızın geliştirme sonucundaki tam hali aşağıda bulunuyor.

import groovy.json.JsonOutput
import java.util.regex.Pattern

class ResponseTransformation {
    static void main(String[] args) {
        byte[] input = new String("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
                "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" +
                "    <soap:Body>\n" +
                "        <m:NumberToDollarsResponse xmlns:m=\"http://www.dataaccess.com/webservicesserver/\">\n" +
                "            <m:NumberToDollarsResult>five hundred dollars</m:NumberToDollarsResult>\n" +
                "        </m:NumberToDollarsResponse>\n" +
                "    </soap:Body>\n" +
                "</soap:Envelope>").getBytes()

        def numberToDollarsResultPattern = Pattern.compile("<m:NumberToDollarsResult>(.*?)</m:NumberToDollarsResult>")

        def inputAsString = new String(input)
        def result = getValueByPattern(inputAsString, numberToDollarsResultPattern)
        def output = JsonOutput.toJson(results: result)

        println(output)
    }

    static Object getValueByPattern(String input, Pattern pattern) {
        def matcher = pattern.matcher(input);
        if (matcher.find()) {
            return matcher.group(1)
        }
        return null
    }
}

Bu sınıfta yaptığımız transform’u api üzerine taşıyalım.

package com.mirket.gateway.groovy;

import groovy.json.JsonOutput
import java.util.regex.Pattern

public class GroovyTransformationScriptImpl implements GroovyTransformationScript {
    public byte[] transform(byte[] input) {
        def numberToDollarsResultPattern = Pattern.compile("<m:NumberToDollarsResult>(.*?)</m:NumberToDollarsResult>")

        def inputAsString = new String(input)
        def result = getValueByPattern(inputAsString, numberToDollarsResultPattern)
        def output = JsonOutput.toJson(results: result)
        return output.getBytes();
    }

    static Object getValueByPattern(String input, Pattern pattern) {
        def matcher = pattern.matcher(input);
        if (matcher.find()) {
            return matcher.group(1)
        }
        return null
    }
}

IDE’de geliştirme kolaylığı olması açısından tanımladığımız input ve console’a çıktı yazdırmak için kullandığımız println(output) metodunu kaldırıp output objemizi byte olarak dönüyoruz.


API İsteği Başlıkları tabında aşağıdaki gibi bir istek başlığı tanımlanır.

İstek Başlığı İsmi: Content-Type

İstekte Gelen Başlığın Üzerine Yaz: İşaretli

Değer Kaynağı: Sabit

Sabit Değer: text/xml; charset=utf-8

Kaydet butonuna tıklayarak apimi kaydediyorum.

Test

Oluşturulan API’nin güncelle butonuna tıklanır. Test sekmesine tıklanır.

İstek bölümünde Gövde tabına tıklanır. Aşağıdaki gibi bir istek gövdesi eklenir.

{
  "num": 50
}

Çalıştır’a tıklanır.

Örnek cevap:

{
  "results": "five hundred dollars"
}

SOAP to REST

JSONPlaceholder’da bulunan gönderi güncelleme public apisine SOAP bir mirket apisi ile istek atmaya çalışalım.

API Oluşturma

Tanım sekmesinde aşağıdaki bilgiler doldurulur:

Ad: Update Post - JSONPlaceholder | SOAP to REST

Açıklama: JSONPlaceholder da REST bir api olan gönderi güncelleme apisine istek ve cevap dönüşümü ile soap isteği yapabilmeyi sağlayan mirket apisi.

Durum: Aktif

Tip: SOAP

EndPoint: /groovy/posts-operations

Metot: updatePostRequest

API Oluşturma
Figure 2. API Oluşturma

Yönlendirme sekmesine tıklanır ve Basit Yönlendirme seçilir.

Backend Http Metod: PUT


Dönüşüm sekmesine tıklanır ve İstek Veri Dönüşümü tabında Groovy seçilir.

Mirket API’mize geldiğimiz SOAP XML request’imizi JSONPlaceholder’a giderken kullanacağımız JSON request’imize dönüştürmek için request transformation kodumuzu yazalım.

Mirket apimizi tetiklemek için kullandığımız SOAP request xml’i:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://jsonplaceholder.com/wsdl/">
    <soapenv:Header/>
    <soapenv:Body>
        <wsdl:updatePostRequest>
            <userId>1</userId>
            <id>2</id>
            <title>qui est esse</title>
            <body>est rerum tempore vitae\nsequi sint nihil reprehenderit
dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil
molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi
nulla</body>
        </wsdl:updatePostRequest>
    </soapenv:Body>
</soapenv:Envelope>

IDE üzerinde RequestTransformation adında bir groovy sınıfı oluşturuyorum. Hemen ardından static main metotumuzu tanımlıyoruz.

class RequestTransformation {
    static void main(String[] args) {

    }
}

Groovy kodunu IDE’de daha rahat test edebilmek adına main metodumun içerisine örnek bir soap request xml’imi tanımlıyorum.

String requestXml = "<soapenv:Envelope\n" +
    "xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"\n" +
    "xmlns:wsdl=\"http://jsonplaceholder.com/wsdl/\">\n" +
    "    <soapenv:Header/>\n" +
    "    <soapenv:Body>\n" +
    "        <wsdl:updatePostRequest>\n" +
    "            <userId>1</userId>\n" +
    "            <id>2</id>\n" +
    "            <title>qui est esse</title>\n" +
    "            <body>est rerum tempore vitae\\nsequi sint nihil reprehenderit\n" +
    "dolor beatae ea dolores neque\\nfugiat blanditiis voluptate porro vel nihil\n" +
    "molestiae ut reiciendis\\nqui aperiam non debitis possimus qui neque nisi\n" +
    "nulla</body>\n" +
    "        </wsdl:updatePostRequest>\n" +
    "    </soapenv:Body>\n" +
    "</soapenv:Envelope>"

SOAP XML’i içindeki taglar arasındaki değerleri çekebilmek için bir tane parse metodu tanımlıyorum.

static String parse(String tagName, String input) {
    def matcher = Pattern.compile("<$tagName>(.*?)</$tagName>").matcher(input)
    return matcher.find() ? matcher.group(1) : ""
}

Yazdığımız parse metodumuzu main metodu içinde çağırarak SOAP XML request’imiz içindeki parametreleri çekiyoruz.

def userId = parse("userId", requestXml)
def id = parse("id", requestXml)
def title = parse("title", requestXml)
def body = parse("body", requestXml)

JsonOutput yardımı ile parametrelerimizi geçerek json request’imizi oluşturuyorum.

def output = JsonOutput.toJson(userId: userId, id: id, title: title, body: body)

Json request’imiz düzgün oluşup oluşmadığını görmek için main metodumda consola yazdırıyorum.

println(output)

Main metodumu çalıştırdıktan sonra aşağıdaki gibi bir çıktının console’a çıktığını görüyorum.

> Task :RequestTransformation.main()
{"userId":"1","id":"2","title":"qui est esse","body":"est rerum tempore vitae nsequi sint nihil reprehenderit"}

Sınıfımızın geliştirme sonucundaki tam hali aşağıda bulunuyor.

import groovy.json.JsonOutput
import java.util.regex.Pattern

class RequestTransformation {
    static void main(String[] args) {
        String requestXml = "<soapenv:Envelope\n" +
                "xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"\n" +
                "xmlns:wsdl=\"http://jsonplaceholder.com/wsdl/\">\n" +
                "    <soapenv:Header/>\n" +
                "    <soapenv:Body>\n" +
                "        <wsdl:updatePostRequest>\n" +
                "            <userId>1</userId>\n" +
                "            <id>2</id>\n" +
                "            <title>qui est esse</title>\n" +
                "            <body>est rerum tempore vitae nsequi sint nihil reprehenderit</body>\n" +
                "        </wsdl:updatePostRequest>\n" +
                "    </soapenv:Body>\n" +
                "</soapenv:Envelope>"

        def userId = parse("userId", requestXml)
        def id = parse("id", requestXml)
        def title = parse("title", requestXml)
        def body = parse("body", requestXml)

        def output = JsonOutput.toJson(userId: userId, id: id, title: title, body: body)

        println(output)
    }

    static String parse(String tagName, String input) {
        def matcher = Pattern.compile("<$tagName>(.*?)</$tagName>").matcher(input);
        return matcher.find() ? matcher.group(1) : ""
    }
}

Bu sınıfta yaptığımız transform’u api üzerine taşıyalım.

package com.mirket.gateway.groovy;

import groovy.json.JsonOutput
import java.util.regex.Pattern
import java.nio.charset.StandardCharsets

public class GroovyTransformationScriptImpl implements GroovyTransformationScript {
    public byte[] transform(byte[] input) {
        def inputString = new String(input, StandardCharsets.UTF_8)
        def userId = parse("userId", inputString)
        def id = parse("id", inputString)
        def title = parse("title", inputString)
        def body = parse("body", inputString)

        def output = JsonOutput.toJson(userId: userId, id: id, title: title, body: body)

        return output.getBytes(StandardCharsets.UTF_8);
    }

    static String parse(String tagName, String input) {
        def matcher = Pattern.compile("<$tagName>(.*?)</$tagName>").matcher(input);
        return matcher.find() ? matcher.group(1) : ""
    }
}

IDE’de geliştirme kolaylığı olması açısından tanımladığımız requestXml ve console’a çıktı yazdırmak için kullandığımız println(output) metodunu kaldırıp output objemizi byte olarak dönüyoruz.


Cevap Veri Dönüşümü tabında Groovy seçilir.

Gittiğimiz REST apinin bize döndüğü cevap json’ını soap xml’ine dönüştürmek için bir response transformation kodu yazalım.

{
    "id": 1,
    "title": "foo",
    "body": "bar",
    "userId": 1
}

IDE üzerinde ResponseTransformation adında bir groovy sınıfı oluşturuyorum. Hemen ardından static main metotumuzu tanımlıyoruz.

class ResponseTransformation {
    static void main(String[] args) {

    }
}

Groovy kodunu IDE’de daha rahat test edebilmek adına main metodumun içerisine örnek bir rest response json’ımızı tanımlıyorum.

String responseJson = "{\"id\": 1, \"title\": \"foo\", \"body\": \"bar\", \"userId\": 1}"

Response body’deki değerleri almak için json’ı ayrıştırmam gerekiyor. Bunun için JsonSlurper tanımlıyorum. Daha sonrasında parseText metodu yardımı ile json’ını ayrıştırıyorum. Ayrıştırma sonucunda map üzerinden değerlerimi çekebilirim artık.

JsonSlurper jsonSlurper = new JsonSlurper()
Map<String, Object> responseMap = jsonSlurper.parseText(responseJson) as Map<String, Object>

SOAP response’umuzu bize dönen bir metot yazıyorum.

static String generateSoapResponse(Map<String, Object> map) {
    return "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:wsdl=\"http://jsonplaceholder.com/wsdl/\">\n" +
            "  <soapenv:Body>\n" +
            "    <wsdl:updatePostResponse>\n" +
            "       <userId>${map.get("userId")}</userId>\n" +
            "       <id>${map.get("id")}</id>\n" +
            "       <title>${map.get("title")}</title>\n" +
            "       <body>${map.get("body")}</body>\n" +
            "    </wsdl:updatePostResponse>\n" +
            "  </soapenv:Body>\n" +
            "</soapenv:Envelope>"
}

Yazdığımız metodu main mateodumuzda çağırıp, response adında bir String’e response’umuzu atıyorum.

String response = generateSoapResponse(responseMap)

Json response’umuzun düzgün oluşup oluşmadığını görmek için main metodumda consola yazdırıyorum.

println(response)

Main metodumu çalıştırdıktan sonra aşağıdaki gibi bir çıktının console’a çıktığını görüyorum.

> Task :ResponseTransformation.main()
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://jsonplaceholder.com/wsdl/">
  <soapenv:Body>
    <wsdl:updatePostResponse>
       <userId>1</userId>
       <id>1</id>
       <title>foo</title>
       <body>bar</body>
    </wsdl:updatePostResponse>
  </soapenv:Body>
</soapenv:Envelope>

Sınıfımızın geliştirme sonucundaki tam hali aşağıda bulunuyor.

import groovy.json.JsonSlurper

class ResponseTransformation {
    static void main(String[] args) {
        String responseJson = "{\"id\": 1, \"title\": \"foo\", \"body\": \"bar\", \"userId\": 1}"

        JsonSlurper jsonSlurper = new JsonSlurper()
        Map<String, Object> responseMap = jsonSlurper.parseText(responseJson) as Map<String, Object>

        String response = generateSoapResponse(responseMap)
        println(response)
    }

    static String generateSoapResponse(Map<String, Object> map) {
        return "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:wsdl=\"http://jsonplaceholder.com/wsdl/\">\n" +
                "  <soapenv:Body>\n" +
                "    <wsdl:updatePostResponse>\n" +
                "       <userId>${map.get("userId")}</userId>\n" +
                "       <id>${map.get("id")}</id>\n" +
                "       <title>${map.get("title")}</title>\n" +
                "       <body>${map.get("body")}</body>\n" +
                "    </wsdl:updatePostResponse>\n" +
                "  </soapenv:Body>\n" +
                "</soapenv:Envelope>"
    }
}

Bu sınıfta yaptığımız transform’u api üzerine taşıyalım.

package com.mirket.gateway.groovy;

import groovy.json.JsonSlurper
import java.nio.charset.StandardCharsets

public class GroovyTransformationScriptImpl implements GroovyTransformationScript {
    public byte[] transform(byte[] input) {
        def inputString = new String(input, StandardCharsets.UTF_8)
        JsonSlurper jsonSlurper = new JsonSlurper()
        Map<String, Object> responseMap = jsonSlurper.parseText(inputString) as Map<String, Object>

        String response = generateSoapResponse(responseMap)
		return response.getBytes(StandardCharsets.UTF_8)
    }

    static String generateSoapResponse(Map<String, Object> map) {
        return "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:wsdl=\"http://jsonplaceholder.com/wsdl/\">\n" +
                "  <soapenv:Body>\n" +
                "    <wsdl:updatePostResponse>\n" +
                "       <userId>${map.get("userId")}</userId>\n" +
                "       <id>${map.get("id")}</id>\n" +
                "       <title>${map.get("title")}</title>\n" +
                "       <body>${map.get("body")}</body>\n" +
                "    </wsdl:updatePostResponse>\n" +
                "  </soapenv:Body>\n" +
                "</soapenv:Envelope>"
    }
}

IDE’de geliştirme kolaylığı olması açısından tanımladığımız responseJson ve console’a çıktı yazdırmak için kullandığımız println(response) metodunu kaldırıp response objemizi byte olarak dönüyoruz.


API İsteği Başlıkları tabında aşağıdaki gibi bir istek başlığı tanımlanır.

İstek Başlığı İsmi: Content-Type

İstekte Gelen Başlığın Üzerine Yaz: İşaretli

Değer Kaynağı: Sabit

Sabit Değer: application/json

Kaydet butonuna tıklayarak apimi kaydediyorum.

Test

Oluşturulan API’nin güncelle butonuna tıklanır. Test sekmesine tıklanır.

İstek bölümünde Gövde tabına tıklanır. Aşağıdaki gibi bir istek gövdesi eklenir.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://jsonplaceholder.com/wsdl/">
  <soapenv:Body>
    <wsdl:updatePostRequest>
      <userId>1</userId>
      <id>2</id>
      <title>qui est esse</title>
      <body>est rerum tem</body>
    </wsdl:updatePostRequest>
  </soapenv:Body>
</soapenv:Envelope>

Çalıştır’a tıklanır.

Örnek cevap:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://jsonplaceholder.com/wsdl/">
  <soapenv:Body>
    <wsdl:updatePostResponse>
       <userId>1</userId>
       <id>2</id>
       <title>qui est esse</title>
       <body>est rerum tem</body>
    </wsdl:updatePostResponse>
  </soapenv:Body>
</soapenv:Envelope>