Skip to content

Instantly share code, notes, and snippets.

@farindra
Last active March 11, 2024 02:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save farindra/448d13a62eab407d1a1a15612c6b2a39 to your computer and use it in GitHub Desktop.
Save farindra/448d13a62eab407d1a1a15612c6b2a39 to your computer and use it in GitHub Desktop.
SIMPLE JSON REST API RESPONSE GUIDELINES

SIMPLE JSON REST API RESPONSE GUIDELINES

English Version

Pendahuluan

Pada umumnya standarisasi JSON REST API RESPONSE memang tidak ditentukan, namun untuk pencapaian efisiensi, konsistensi dan kemudahan maka dibutuhkan standarisasi tersebut.

Pencapaian ini kami temukan dan terapkan setelah mengerjakan banyak proyek degan kasus-kasus yang umum, sehingga kami simpulkan menjadi suatu standarisasi yang kami gunakan sampai sekarang.

Kami yakin bagi anda yang menemukan artikel ini, berarti Anda sudah mengerti akan segalah hal tentang JSON REST API RESPONSE, sehingga kami tidak menjelaskan detail tentang hal-hal kecil yang berhubungan tentang itu.

Goal kami untuk adalah efisiensi, konsistensi dan kemudahan


Fokus

Metode dan Pola yang kami gunakan adalah selalu menggunakan fitur yang sudah ada dan umum, seperti

kami hanya fokus pada RESPONSE DESIGN tidak pada metode dan pola REQUEST.


Standarisasi HTTP Response Code

Berikut ini standarisasi HTTP Response Code yang kami gunakan:

CODE DETAIL GROUP
200 sukses untuk semua aksi baik Request client, Proses pada server (Backend) dan Response yang dikembalikan success
400 error karena validasi request paramater atau payload tidak sesuai error
401 error karena tidak memiliki otorisasi error
403 error karena tidak memiliki akses error
404 error karena data/service tidak ditemukan error
500 error pada sisi server, pada response ini selalu mengirimkan kode referensi error pada key error_ref. Kode referensi tersebut nanti akan digunakan Backend Developer untuk mencari error pada server logs error

Standarisasi Response JSON Design

Design respon JSON yang kami gunakan hanya memiliki 2 key utama yaitu:

Deskripsi Keys Detail
Status Respon success, error - semua respon dengan kode 200 maka akan memiliki key success
- semua respon dengan kode selain 200 maka akan memiliki key error
Data Respon data key ini bebas digunakan untuk memuat data yang diinginkan baik ketika status respon sukses atau pun error

Khusus error kode 500 akan terdapat key error_ref di dalam key data

Berikut ini adalah contoh penggunaannya:

Success Response

    {
        "success": "Success Messages ...",
        "data": [...]
    }

Error Response

    {
        "error": "Error Messages ...",
        "data": [...]
    }

Error Response 500

    {
        "error": "Error Messages ...",
        "data": [
            "error_ref": "XSADC",
             ...
        ]
    }

Kenapa hanya sedikit kode respon yang digunakan ?

Karena prinsip kami yang mengutamakan kesederhanaan demi tercapai kemudahan dalam pengelolaan HTTP respon REST API baik dari sisi Backend maupun Frontend, semua kode tersebut merupakan kode yang selama ini kami temui dan paling sering digunakan dan memiliki relevansi kuat dengan kebutuhan integerasi yang umum.

Kenapa hanya kode respon 200 yang digunakan untuk sukses ?

Karena berdasarkan pengalaman kami, apapun aksi yang sukses semua bisa dirangkum dalam kode 200 karena dari sisi client tidak membutuhkan informasi jenis sukses apa yang mereka terima.

Kenapa hanya 2 main key pada Respon JSON ?

Karena semakin sedikit main keys akan semakin mudah untuk developer dalam mendefiniskan keperluan dan implementasi penggunaan desain kode pemogramman.

Selain itu client hanya fokus pada success dan error respon dimana keterangan nya sudah terdapat pada value masing masing keys sehingga tidak dibutuhkan key lain untuk menjelaskan kenapa success atau error itu terjadi dan untuk key data merupakan detail dari status tersebut, pola ini sangat baik untuk konsistensi data dan efisiensi bandwith.

Dari sisi developer hal ini memudahkan untuk membaca status sukses atau error ketika response didefinisikan atau didapat, hal ini akan dijelaskan pada bagian selanjutnya.

Kenapa hanya error kode 500 yang memilik key error_ref didalam main key data pada Respon JSON ?

Karena seluruh error telah umum didefinisikan pada HTTP Response Code kecuali kode error 500

Error kode 500 hanya menginformasikan terjadi error pada server, oleh karena itu server/backend hanya perlu mengirimkan kode referensi error berupa minimal 5 string karakter kapital yang nanti kode tersebut akan digunakan untuk mencari detail error pada error logs

Kenapa tidak menggunakan angka? karena kita tidak perlu mendefinisikan error itu sendiri. Hal ini tidak baik untuk pengembangan, karena akan ada pendefinisian kode baru untuk error baru.

Developer Backend hanya perlu membuat engine yang menempelkan kode referensi pada setiap error log yang dihasilkan, hal ini sangat baik dari sisi keamanan dan kemudahan informasi dari sisi client, karena client tidak perlu tahu detail error yang terjadi dari sisi server/Backend.

Kenapa harus didalam main key data ? karena disitulah detail dari status yang terjadi.

❌ We Don't do this
Kami tidak menggunakan Metode dan Pola Design Response yang bisanya menyertakan key message,error_message dan sejenisnya karena ini akan boros bandwith dan tidak konsisten pada struktur design
Umumnya pada Metode dan Pola Design Response yang lain mereka mendefinisikan kode error khusus berupa angka, yang kemudian dikirim kepada client berupa key tersendiri misalnya error_code, error_number dan sejenisnya, hal ini tidak efisien, tidak aman dan tidak muda untuk dikelola

Semoga bermanfaat.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment