Tuesday, September 13, 2016

Convert REST to SOAP in OAG

Pada blog kali ini kita akan coba untuk membuat filter yang dapat melakukan convert rest ke soap. Jika biasanya target aplikasi menggunakan soap maka client juga akan menggunakan soap sebagai wadah integrasi antara kedua aplikasi tersebut begitu juga dengan rest. Lalu bagaimana jika client menggunakan rest sedangkan target menggunakan soap atau sebaliknya? yak, kita harus melakukan konversi sehingga request tersebut dapat diterima dan di response oleh si target dan diterima kembali oleh client.

Berikut contoh implementasi atau langkah-langkah untuk melakukan konversi service rest ke soap di OAG

Persiapan
Eksekusi

Hasil akhir dari filter yang akan kita buat untuk konversi rest ke soap adalah sebagai berikut

Berikut langkah-langkah yang akan kita lakukan
  1. Tarik filter Extract REST Request Attributes ke kanvas policy, tidak perlu menambahkan konfig apapun jadi kita langsung klik finish.
  2. Tarik filter Set Message ke kanvas policy, kemudian set Content-Type dan Body sebagai berikut
    Content-Type : application/soap+xml; action="urn:getBank"
    Body :
    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:blz="http://thomas-bayer.com/blz/">
       <soap:Header/>
       <soap:Body>
          <blz:getBank>
             <blz:blz>${http.querystring.blz}</blz:blz>
          </blz:getBank>
       </soap:Body>
    </soap:Envelope>
  3. Tarik filter Set HTTP Verb ke kanvas polcy, kemudian  set nilai HTTP Verb : POST
  4. Tarik filter Connect to URL dan set URL dengan nilai : http://www.thomas-bayer.com/axis2/services/BLZService?wsdl
  5. Tarik filter Retrieve from message, kemudian klik Add dan berinama "SOAP Body"
  6. Masuk pada konfigurasi xPath Expression, kemudian load file xml dimana file xml tersebut adalah return dari hasil soap service.
    Berikut contoh return success dari soap service

    <?xml version='1.0' encoding='UTF-8'?>
    <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
    <soapenv:Body>
    <ns1:getBankResponse xmlns:ns1="http://thomas-bayer.com/blz/">
        <ns1:details>
            <ns1:bezeichnung>Aachener Bank</ns1:bezeichnung>
            <ns1:bic>GENODED1AAC</ns1:bic>
            <ns1:ort>Aachen</ns1:ort>
            <ns1:plz>52001</ns1:plz>
        </ns1:details>
    </ns1:getBankResponse>
    </soapenv:Body>
    </soapenv:Envelope>
  7. Pilih Use this path pada node <ns1:getBankResponse
  8. Kita sudah selesai untuk melakukan konfigurasi di xPath Expression, kemduain klik OK
  9. buat parameter message.body pada bagian Extracted content will be stored in attribute named
  10. Kemudian kita lanjut ke filter berikutnya yaitu Set the Message, isi semua parameter sesuai gambar di bawah
  11. Kemudian filter yang terakhir adalah XML to JSON, pastikan konfigurasinya sesuai dengan gambar yang ada di bawah ini.
  12. Hubungkan smua policy yang sudah kita buat dengan mengguakan success path, sehingga filter Extract REST request attribute terhubung hingga filter XML to JSON.
  13. Tambahkan Path /getBank kemudian arahkan ke policy REST to SOAP.
  14. Deploy dan test hasilnya :) 
Berikut hasil test yang saya coba lakukan
Akhirnya kita terlah berhasil melakukan konfersi request dari REST service ke SOAP service dan JSON sebagi balikannya bukan xml.

Jika masih bingung dengan fungsi atau kegunaan dari filter-filter tersebut, berikut penjelasan dari tiap-tiap filter.

  1. Extract REST request attribute
    Filter ini digunakan untuk menyimpan value HTTP Header atau query params yang dikirim dari REST service
  2. Set Message
    Filter set Message kita gunakan untuk mendefinisikan content-type dan request message yang akan dikirm ke SOAP. Di dalam body terdapat param ${http.querystring.blz} dimana variable blz ini akan digunakan sebagai query param pada url http://192.168.1.102:8080/getBank?blz=51410700. OAG akan menangkap value dari variable blz secara otomatis.
  3. Set HTTP Verb
    Filter ini digunakan untuk menspesifikasikan HTTP verb apa yang akan digunakan, karena targetnya adalah SOAP dan SOAP menggunakan HTTP verb POST maka pada filter ini kita set HTTP Verb nya sebagai POST.
  4. Connect to URL
    adalah filter yang kita gunakan untuk menspesifikasikan url target yang akan kita hit.
  5. Retrieve attributes from message
    Filter ini digunakan untuk mendapatkan keterangan tertentu menggunakan xPath, dimana node xml yang kita pilih yanag akan menjadi result. Result tersebut kemudian ditampung kedalam satu parameter yang terlah kita beri nama message.body.
  6. Set Message yang kemudian kita labeli dengan nama Extract soap body
    Filter ini kita gunakan untuk mengeluarkan response dari SOAP service yang sudah melewati filter no 5, message atau response ini tentunya masih berformat xml.
  7. XML to JSON
    Ini adalah filter yang akan melakukan konfersi dari XML ke JSON, message yang ada di filter no 6 yang masih berformat xml secara otomatis akan ter-konfersi menjadi json setelah melewati filter ini.
Demikian penjelasana dan tutorial dari konversi REST ke SOAP di OAG, semoga bermanfaat dan dapat membantu.

Terimakash :)

No comments:

Post a Comment