Cara menguji REST API menggunakan ekstensi Chrome "Advanced Rest Client"


89

Mengikuti instruksi pada tautan di bawah ini, saya berhasil membangun REST API untuk aplikasi Django saya: http://django-rest-framework.org/tutorial/quickstart .

Saya dapat mengujinya dengan melakukan hal berikut dari prompt Unix:

curl -H 'Accept: application/json; indent=4' -u root:myPassword http://www.myWebsite.com/users/

Berhasil :)

Namun, saya ingin menggunakan ekstensi Chrome Advanced Rest Client untuk menguji fungsi yang sama ini. Saya telah menginstal ekstensi, tetapi saya tidak tahu di mana / bagaimana meletakkan bidang. Ketika saya membuat tebakan terpelajar saya (seperti yang Anda lihat di tangkapan layar), ia menolaknya dengan mengatakan "Kredensial otentikasi tidak diberikan"

tangkapan layar dari permintaan yang gagal

Bagaimana / di mana saya harus menentukan parameter saya ke REST API?

Jawaban:


99

Penemuannya suram, tetapi cukup pintar bagaimana Klien Istirahat Tingkat Lanjut menangani otentikasi dasar. Pintasan yang disebutkan abraham tidak berhasil untuk saya, tetapi sedikit mengaduk-aduk mengungkapkan bagaimana cara melakukannya.

Hal pertama yang perlu Anda lakukan adalah menambahkan Authorizationtajuk: menu

Kemudian, hal kecil yang bagus muncul saat Anda memfokuskan valuemasukan (perhatikan kotak "buat" di kanan bawah): buat nilai autentikasi

Mengkliknya akan memunculkan sebuah kotak. Ia bahkan melakukan OAuth, jika Anda mau! masukan yang nyaman

Tada! Jika Anda membiarkan kolom nilai kosong saat Anda mengklik "buat", itu akan menambahkan Basicbagian ke dalamnya (saya berasumsi itu juga akan menambahkan hal-hal OAuth yang diperlukan, tetapi saya tidak mencobanya, karena kebutuhan saya saat ini untuk dasar otentikasi), jadi Anda tidak perlu melakukan apa pun. mengisi di lapangan sesuai kebutuhan


Untuk otentikasi dasar - youtube.com/watch?v=1SP1hgm9JqA . Di tab "Formulir header", tambahkan header "Otorisasi". Ini akan melakukan saran otomatis setelah Anda mulai mengetik. Pada nilainya, klik tombol Edit (pensil) dan ketik kredensial autentikasi di pop-up.
uutsav

10

Dari tangkapan layar saya dapat melihat bahwa Anda ingin meneruskan nilai "pengguna" dan "kata sandi" ke layanan. Anda telah mengirim nilai parameter di bagian header permintaan yang salah. Nilai dikirim di badan permintaan dan bukan di header permintaan. Juga sintaks Anda salah. Sintaks yang benar adalah: {"user":"user_val","password":"password_val"}. Periksa juga apa jenis kontennya. Ini harus cocok dengan jenis konten yang telah Anda setel ke layanan Anda.


7

Ini sepertinya pertanyaan yang sangat lama, tapi saya memberikan jawaban, sehingga bisa membantu orang lain. Anda dapat menentukan variabel di layar kedua di bagian formulir, seperti yang ditunjukkan di bawah ini atau dalam format RAW dengan menambahkan variabel seperti yang ditunjukkan pada gambar kedua.

Tentukan Variabel Formulir

Tentukan dalam format RAW

Jika nilai variabel dan variabel Anda valid, Anda akan melihat respons yang berhasil di bagian respons.


bagaimana jika itu permintaan GET?
Dejell

Saya harus mengatur header Content-Type secara eksplisit, dengan nilai: application / x-www-form-urlencoded
shasi kanth

6

Format pintasan yang umumnya digunakan untuk autentikasi dasar adalah http://username:password@example.com/path. Anda juga ingin memasukkan header accept dalam permintaan.

masukkan deskripsi gambar di sini


Terima kasih. Saya mendapat tanggapan yang meliputi: <p> Verifikasi CSRF gagal. Permintaan dibatalkan. </p> Bagaimana cara menyiasatinya?
Saqib Ali

Kedengarannya seperti Anda tidak mencapai titik akhir API tetapi malah mencapai titik akhir untuk dicapai JavaScript.
abraham

Ini biasanya merupakan solusi yang bagus - kecuali UID atau PWD Anda menyertakan simbol ":" atau "@".
Blamkin86

Anda mungkin harus menyandikan URL nama pengguna / kata sandi jika mengandung karakter yang sudah dipesan.
abraham

Saya mencoba menggunakan solusi Anda untuk perintah GET di HTTPS dan tidak berhasil. misal : pengguna: @ api.com / v2 / shipments Ini bekerja dalam bentuk ikal. apa yang salah? tidak ada kata sandi
Dejell

3

di bagian tajuk Anda harus menulis

Otorisasi: Dasar aG9sY67890vbGNpbQ ==

di mana string setelah basic adalah nilai pengkodean 64bit dari nama pengguna Anda: kata sandi. Contoh php untuk mendapatkan nilai header adalah: echo "Authorization: Basic". base64_encode ("myUser: myPassword");

nb: Saya menganggap metode otentikasi Anda sebagai dasar. yang juga bisa berbeda.


Pertanyaan tersebut secara khusus menanyakan tentang bagaimana melakukannya di ekstensi Chrome Advanced Rest Client.
Shauna

Jawaban Shauna benar dan harus menjadi jawaban yang diterima, tetapi komentar dari sharif ini juga berguna bagi mereka yang ingin tahu apa yang telah dilakukan klien Chrome Advanced Rest untuk menyandikan pengguna dan kata sandi untuk Anda. Terima kasih.
Deemoe

3

Tambahkan header otorisasi dan klik tombol pensil untuk memasukkan nama pengguna dan sandi

masukkan deskripsi gambar di sini


0

Cara mudah untuk mengatasi masalah otentikasi ini adalah dengan mencuri token otentikasi menggunakan Fiddler.

Langkah

  1. Jalankan fiddler dan browser.
  2. Arahkan browser untuk membuka aplikasi web (situs web) dan lakukan otentikasi yang diperlukan.
  3. Buka Fiddler dan klik permintaan halaman HTTP 200 HTML. Menangkap nilai cookie menggunakan Fiddler
  4. Di panel kanan, dari header permintaan, salin nilai parameter header cookie. masukkan deskripsi gambar di sini
  5. Buka REST Client dan klik tab "Bentuk header" dan berikan nilai cookie dari papan klip.

Klik tombol KIRIM dan itu akan mengambil hasil.


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.