Sunday, June 21, 2015

Implement Restful API In Oracle Service Bus 12c Part 1

Beberapa waktu yang lalu, saya sempat mencari tau tentang cara mengimplement  REST services pada OSB 12c. Setelah saya googling ke beberapa tempat, saya menemukan reference yang cukup lengkap.

Pada kasus yang saya temui, backend yang digunakan adalah SOAP service, sedangkan yang mengconsume menggunakan REST service dan kita akan menggunakan Jdeveloper 12c untuk mendevelopnya. Pada dasarnya selain mengimplement REST service, kita jg harus melakukan konversi dari SOAP ke REST. Di OSB 12c, kita bisa menggunakan fitur baru yang telah disediakan yaitu REST Adapter pada Jdeveloper 12c. 

Pertama - tama kita buka dulu Oracle Jdeveloper 12c kemudian kita buat aplikasi & project Service Bus.
Beri nama Application nya : DemoApplication & nama Project nya : DemoProject

Selanjutnya kita akan membuat native schema yang akan dipakai untuk mentranslate setiap SOAP XML menjadi JSON. Selain untuk mentranslate, native schema ini jg dipakai untuk mendefinisikan setiap request maupun response JSON yang kita inginkan.

Untuk membuatnya, pertama kita klik kanan pada folder DemoProject, kemudian pilih New > NXSD Schema
 Beri nama file native schema yang akan kita buat
 Pilih Type nya JSON Interchange Format

Isi target namespace nya. Target namespace ini nantinya akan sangat diperlukan, usahakan nama targetNamespacenya mendefinisikan REST Proxy Service yang akan kita buat.
Berikut adalah sample JSON yang akan kita buat. Namun harus diperhatikan bahwa di kotak dialog ada yang bernama Root-Element. Root Element yang dimaksud adalah "response" yang ada pada contoh JSON nya.

 {
  "response": {
    "responseCode": "00",
    "responseDesc": "Success",
    "doctor": [
      {
        "doctorId": "2.16.840.1.113883.3.204.16-2222222222222222",
        "doctorName": "Yuki Buwana",
        "expertise": "DOKTER SPESIALIS MATA",
        "address": "Ciasem 1",
        "phoneNumber": "08912812713",
        "email": "yuki@nostratech.com"
      },
      {
        "doctorId": "2.16.840.1.113883.3.204.16-1234567890123456",
        "doctorName": "Didi Ruswandi",
        "expertise": "DOKTER SPESIALIS MATA",
        "address": "Ciasem 2",
        "phoneNumber": "3635635",
        "email": "didi@nostratech.com"
      }
    ]
  }
}

Untuk mengisi sample nya cukup hilangkan "response" nya seperti contoh dibawah

 {
    "responseCode": "00",
    "responseDesc": "Success",
    "doctor": [
      {
        "doctorId": "2.16.840.1.113883.3.204.16-2222222222222222",
        "doctorName": "Yuki Buwana",
        "expertise": "DOKTER SPESIALIS MATA",
        "address": "Ciasem 1",
        "phoneNumber": "08912812713",
        "email": "yuki@nostratech.com"
      },
      {
        "doctorId": "2.16.840.1.113883.3.204.16-1234567890123456",
        "doctorName": "Didi Ruswandi",
        "expertise": "DOKTER SPESIALIS MATA",
        "address": "Ciasem 2",
        "phoneNumber": "3635635",
        "email": "didi@nostratech.com"
      }
    ]
  }

Jika sudah klik Next, maka akan tergenerate XSD yang nanti akan merubah format XML menjadi JSON.
Tadi kita sudah membuat response untuk JSON yang akan kita buat, maka kita jg harus membuat request untuk JSON nya. Caranya cukup tambahkan pada file NXSD Schema yang tadi kita buat code berikut :

       <xsd:element name="request">
      <xsd:complexType>
         <xsd:sequence>
            <xsd:element name="doctorId" type="xsd:string"/>
            <xsd:element name="doctorName" type="xsd:string"/>
            <xsd:element name="expertise" type="xsd:string"/>
         </xsd:sequence>
      </xsd:complexType>
   </xsd:element>

Jika sudah, maka tampilan Design NXSD Schema yang telah kita buat akan menjadi seperti berikut.

Langkah selanjutnya kita akan membuat Proxy Service berbentuk REST yang akan menggunakan NXSD Schema yang tadi telah kita buat. Double klik composite Demo Project, kemudian pada component pallete drag component REST ke bagian Proxy Service. Beri nama Proxy Service nya, lalu pada bagian operation bindings, klik tanda tambah lalu pilih Add Operation Binding.

Ketika kita memilih Add Operation binding, akan terbuka window baru. Pada bagian ini, pertama tama kita beri nama operation nya terlebih dahulu, kemudian pada tab Request, klik Browse for Schema File
Pilih Schema yang telah kita buat tadi, dan pilih root elemen request sesuai dengan tab yang kita pilih tadi yaitu request.


Jika sudah, klik tab Response, kemudian pilih Schema yang telah kita buat tadi, dan pilih Root Elemen Response.
Pada bagian payload, pilih JSON agar nanti output yang muncul berupa JSON Format. Selanjutnya klik OK.

Jika sudah bisa klik OK.

Oke, sekarang kita sudah berhasil membuat Proxy Service yang menggunakan REST, langkah selanjutnya adalah membuat Business Service yang memakai SOAP. Untuk membuatnya pertama tama kita import WSDL Endpoint yang akan kita gunakan. Caranya adalah dengan mengklik kanan pada Folder DemoProject, kemudian pilih Import.

 Pilih Service Bus Resources. Kemudian klik Ok.

 Pilih Resource From URL. Kemudian klik Next.

 Isi Source URL dengan WSDL Endpoint yang kalian ingin gunakan, kemudian klik Next.

Pada bagian ini cukup klik Finish. Dengan ini kita sudah mengimport WSDL & XSD yang dipakai oleh Endpoint sehingga kita bisa membuat Business Service berdasarkan WSDL & XSD ini.

Langkah selanjutnya adalah mendrag component HTTP ke External Services. Beri nama Business Service yang akan kita buat kemudian klik Next.

 Pilih WSDL yang telah tadi kita import, kemudian klik Next.

 Pada bagian ini kita bisa mengubah endpoint Business Servicenya, apakah sudah sesuai atau belum, jika sudah bisa klik Finish.



 Business Service telah selesai dibuat. Untuk kelanjutan nya bisa di cek di Part 2.

No comments:

Post a Comment