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?

Saqib Ali
sumber

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

Shauna
sumber
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.

pan1490
sumber
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.

Angela
sumber
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:[email protected]/path. Anda juga ingin memasukkan header accept dalam permintaan.

masukkan deskripsi gambar di sini

abraham
sumber
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.

Muktadir
sumber
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

Ahmad Nadeem
sumber
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.

Praveen Kumar Thalluri
sumber
0

Dengan ARC terbaru untuk permintaan GET dengan otentikasi perlu menambahkan header mentah bernama Otorisasi: authtoken.

Temukan cuplikan layar Dapatkan permintaan dengan otentikasi dan parameter kueri

Untuk menambahkan parameter Query klik panah drop down di sisi kiri kotak URL.

Sagar Misal
sumber