Spesifikasi / Protokol API

Views: 43
0 0
Read Time:2 Minute, 47 Second

Pada artikel sebelumnya kita sudah membahas mengenai salah satu arsitektur API yaitu REST. Selain itu ada beberapa spesifikasi, protokol ataupun arsitektur API. Berikut ini kita akan melihat beberapa yang banyak digunakan dalam integrasi aplikasi.

  1. XML-RPC (Remote Procedure Call) adalah protokol yang digunakan untuk transfer data menggunakan format XML khusus. XML-RPC lebih dahulu ada dibanding SOAP yang juga menggunakan XML dengan format standar. Dibandingkan dengan SOAP, XML-RPC menggunakan bandwidth yang lebih ringan dan lebih mudah diaplikasikan. SOAP (Simple Object Access Protocol) adalah protokol berbasis XML yang memungkinkan user untuk mentransfer data via SMTP dan HTTP. Meskipun banyak kekurangannya, SOAP API lebih mudah digunakan untuk komunikasi data antar aplikasi atau komponen software yang berjalan dalam setting yang bervariasi, ataupun dibangun dengan bahasa pemrograman yang berbeda.
  2. REST (Representational State Transfer) adalah kumpulan konsep arsitektur web API. Konsep REST diperkenalkan oleh Roy Fielding di tahun 2000 dalam disertasi doktoralnya. Interface berbasis REST harus memenuhi batasan arsitektur yang spesifik yang akan dijelaskan di bawah ini. REST (atau disebut juga RESTful) API merupakan arsitektur yang cukup populer digunakan dalam aplikasi.
  3. gRPC adalah framework API global yang open-source. gRPC masih terhitung baru, diperkenalkan oleh Google pada tahun 2015. gRPC memungkinkan aplikasi client untuk memanggil method di server di lokasi mesin berbeda sebagi object lokal. Hal ini untuk mendukung pengembangan distributed services dan aplikasi.gRPC
  4. GraphQL adalah query language untuk API. Dengan GraphQL, aplikasi client dapat menentukan secara persis data yang dibutuhkannya dan mensimplifikasi agregasi data dari berbagai sumber. GraphQL juga memungkinkan developer membuat satu API call untuk mendapatkan semua informasi yang dibutuhkan. Selain itu, satu aspek unik GraphQL adalah menggunakan type system untuk mendeskripsikan data.GraphQL

Seperti yang disebutkan sebelumnya, arsitektur REST API memiliki bebeapa batasan, yakni:

  1. Uniform Interface: interaksi dengan server harus selalu seragam tanpa dibatasi oleh jenis aplikasi maupun device (web atau mobile). Ada 4 prinsip yang menjadi pedoman:
    • Resource Based: setiap resource harus diidentifikasikan dalam request (misal: API/users)
    • Manipulation of Resources Trough Representation: client memiliki representasi resources dan memiliki cukup informasi untuk memodifikasi atau menghapus resources tersebut di server selama client memiliki permission untuk melakukannya.
    • Self-descriptive Messages: setiap message memiliki informasi yang memadai untuk mendeskripsikan cara memroses message sehingga server mudah melakukan analisa terhadap request tersebut.
    • Hypermedia as the Engine of Application State (HATEOAS): perlu menyertakan link untuk setiap response sehingga client dapat menemukan resource dengan mudah.
  2. Client-Server: arsitektur harus berupa client-server. Client mentransfer request untuk resources yang diperlukan tanpa perlu mengetahui proses business logic di server maupun data storage. Server menyimpan resources dan memberikan response tanpa perlu mengetahui frontend UI.
  3. Stateless: setiap request dari client ke server harus disertai semua informasi yang diperlukan agar request tersebut dipahami. Seluruh session state disimpan di sisi client.
  4. Cacheable: setiap response harus menyertakan apakah resource dapat di cache atau tidak, dan berapa lama resource dapat di cache di sisi client. Selanjutnya client bisa mengambil data dari cache untuk meningkatkan performance.
  5. Layered System: client tidak mengetahui apakah terkoneksi secara langsung ke end-server atau intermediary-server (server di antara layer). Intermediary-server dapat meningkatkan availability dan scalability dengan menggunakan load-balancing dan menyediakan shared caches. Layer juga dapat meningkatkan keamanan aplikasi.
  6. Code on Demand (optional): poin ini bersifat opsional, dimana server bisa menyediakan executable codes kepada client, misalnya Java applets dan JavaScript. Dengan ini client bisa meningkatkan fungsionalitasnya.

Untuk lebih detail mengenai batasan-batasan ini bisa dibaca di tautan ini.

Happy
Happy
0 %
Sad
Sad
0 %
Excited
Excited
0 %
Sleepy
Sleepy
0 %
Angry
Angry
0 %
Surprise
Surprise
0 %
Let's Coding while Relaxing