Kunci API - konten atau tajuk


14

Bekerja pada API saat ini dan hanya ingin mengumpulkan pendapat tentang di mana tempat terbaik untuk mengirimkan kunci API. Saya tahu bahwa seharusnya tidak ada di URL, ini meninggalkan header permintaan atau badan pesan.

Jika saya meletakkannya di header saya bisa datang dengan metode generik untuk menariknya keluar yang dapat digunakan di semua layanan, namun spesifikasi yang saya berikan menginginkannya di tubuh (yaitu dalam string JSON dimasukkan sebagai bagian dari objek berseri dalam tubuh POST).


Perhatikan juga bahwa tidak semua jenis permintaan harus memiliki isi dan jika Anda ingin memvalidasi permintaan tanpa isi, kuncinya harus ada di header.
Whymarrh

Jawaban:


11

Di HTTP, ada Authorizationtajuk untuk itu.

Meskipun biasanya digunakan untuk memberikan kredensial pengguna, dalam kasus API, ini dapat berisi ID klien dan kunci API yang sesuai.

Ada beberapa manfaat:

  • Dukungan dari berbagai kerangka kerja. Banyak kerangka kerja akan mengharapkan Authorizationtajuk untuk melakukan otentikasi. Tidak menggunakannya akan memaksa untuk menulis kode tambahan untuk memberi makan kerangka kerja tersebut dengan nilai-nilai khusus.

  • Dukungan dari berbagai alat. Misalnya CURL.

  • Kurang “WTF di mana saya menemukan / meletakkan kunci API ini ?!” dari pengembang baru yang bergabung dengan tim (atau pengembang yang merancang klien baru untuk API Anda).

  • Anda kemudian dapat menggunakan definisi kode status HTTP seperti 401 Unauthorized, untuk yang :

    Responsnya HARUS menyertakan bidang tajuk WWW-Otentikasi [...] Klien MUNGKIN mengulangi permintaan dengan bidang tajuk Otorisasi yang sesuai.

Memindahkannya ke tubuh permintaan bisa menjadi cepat menyakitkan. Sebagian besar kerangka kerja dan alat tidak membuatnya sangat mudah untuk menambahkan tubuh ke permintaan, yang dapat membuat API Anda lebih sulit daripada yang seharusnya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.