Kapan Anda menggunakan header HTTP kustom di bagian permintaan REST API?
Contoh:
Apakah Anda pernah menggunakan
GET /orders/view
(custom HTTP header) CLIENT_ID: 23
dari pada
GET /orders/view/client_id/23 or
GET /orders/view/?client_id=23
Kapan Anda menggunakan header HTTP kustom di bagian permintaan REST API?
Contoh:
Apakah Anda pernah menggunakan
GET /orders/view
(custom HTTP header) CLIENT_ID: 23
dari pada
GET /orders/view/client_id/23 or
GET /orders/view/?client_id=23
Jawaban:
URL menunjukkan sumber itu sendiri. A "klien" adalah sumber daya yang dapat ditindaklanjuti, sehingga harus menjadi bagian dari url dasar: /orders/view/client/23
.
Parameter hanyalah itu, untuk membuat parameter akses ke sumber daya. Hal ini terutama datang ke dalam bermain dengan posting dan pencarian: /orders/find?q=blahblah&sort=foo
. Ada garis tipis antara parameter dan sub-sumber: /orders/view/client/23/active versus /orders/view/client/23?show=active
. Saya merekomendasikan gaya sub-resource dan parameter cadangan untuk pencarian.
Karena setiap titik akhir menunjukkan Transfer Status (untuk mengacaukan mnemonik), header kustom hanya boleh digunakan untuk hal-hal yang tidak melibatkan nama sumber daya (url), status sumber daya (badan), atau parameter secara langsung. mempengaruhi sumber daya (parameter). Itu meninggalkan metadata yang benar tentang permintaan untuk tajuk khusus.
HTTP memiliki banyak pilihan tajuk yang mencakup hampir semua yang Anda perlukan. Di mana saya telah melihat tajuk khusus muncul di sistem ke permintaan sistem yang beroperasi atas nama pengguna. Sistem proxy akan memvalidasi pengguna dan menambahkan " X-User: userid
" ke tajuk dan menggunakan kredensial sistem untuk mencapai titik akhir. Sistem penerima memvalidasi bahwa kredensial sistem diotorisasi untuk bertindak atas nama pengguna, kemudian memvalidasi bahwa pengguna berwenang untuk melakukan tindakan tersebut.
Header kustom memiliki keuntungan sebagai berikut:
Saya hanya akan menggunakan tajuk khusus jika tidak ada cara lain untuk menyampaikan informasi menurut standar atau konvensi. Darren102 menjelaskan cara umum untuk menyampaikan nilai itu. Api Anda akan jauh lebih bersahabat dengan menggunakan ayat pola tipikal menggunakan tajuk khusus. Itu tidak berarti Anda tidak memiliki alasan untuk menggunakannya, hanya saja mereka harus menjadi pilihan terakhir dan sesuatu yang belum ditangani oleh spesifikasi HTTP.
Kapan Anda menggunakan ... header HTTP di bagian permintaan dari REST API?
Otentikasi: GUID, otentikasi dasar, token khusus, dll. Misalnya, Otentikasi Dasar dengan token Panduan untuk api REST alih-alih nama pengguna / kata sandi
Jika Anda terlibat dalam penerusan token atau informasi seperti otentikasi lainnya antara domain yang dicakup oleh PCI-DSS atau aturan keamanan lainnya, Anda mungkin juga harus mengubur parameter karena beberapa peraturan secara eksplisit mewajibkan elemen otentikasi untuk menghindari URL yang dapat diputar ulang secara sepele (dari riwayat browser, log proxy, dll.).
Saya tidak akan menggunakan tajuk khusus karena Anda tidak tahu apakah ada proksi yang akan meneruskannya. Berbasis URL adalah caranya.
DAPATKAN / pesanan / lihat / klien / 23
Pasti OK:
GET /orders/view/client_id/23 or
GET /orders/view/?client_id=23
Juga Oke:
GET /orders/view/23 or
Saya pikir ini juga akan baik-baik saja:
POST /orders/view
(custom HTTP header) CLIENT_ID: 23
Anda dapat menggunakan tajuk khusus untuk menyertakan lebih banyak informasi tentang permintaan yang diproses sebagian mengingat Enveloping bukanlah praktik yang baik. Headernya aman .