Chrome'un "Advanced Rest Client" uzantısını kullanarak REST API nasıl test edilir?


89

Aşağıdaki bağlantıdaki talimatları izleyerek, Django uygulamam için başarıyla bir REST API oluşturdum: http://django-rest-framework.org/tutorial/quickstart .

Unix komut isteminde aşağıdakileri yaparak test edebilirim:

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

İşe yarıyor :)

Ancak, bu aynı işlevi test etmek için Chrome uzantısını Advanced Rest Client kullanmak istiyorum. Uzantıyı yükledim, ancak alanları nereye / nasıl koyacağımı bilmiyorum. Bilgilendirilmiş tahminimi yaptığımda (ekran görüntüsünde görebileceğiniz gibi), "Kimlik doğrulama bilgileri verilmedi" diyerek reddediyor

başarısız isteğin ekran görüntüsü

Parametrelerimi REST API'ye nasıl / nerede belirtmeliyim?

Yanıtlar:


99

Keşfedilebilirlik kasvetli, ancak Advanced Rest Client'ın temel kimlik doğrulamasını nasıl ele aldığı oldukça akıllıca. İbrahim'in bahsettiği kısayol benim için işe yaramadı, ancak biraz etrafı karıştırmak nasıl yaptığını ortaya çıkardı.

Yapmanız gereken ilk şey Authorizationbaşlığı eklemektir : menüler

Ardından, valuegirdiye odaklandığınızda şık bir şey açılır (sağ alttaki "inşa" kutusuna dikkat edin): kimlik doğrulama değerini oluşturmak

Buna tıkladığınızda bir kutu açılır. İsterseniz OAuth bile yapar! uygun girdiler

Tada! "İnşa et" i tıkladığınızda değer alanını boş bırakırsanız, Basicparçayı ona ekleyecektir (gerekli OAuth öğelerini de ekleyeceğini varsayıyorum, ancak mevcut ihtiyaçlarım temel ihtiyaç olduğu için bunu denemedim. kimlik doğrulaması), böylece hiçbir şey yapmanıza gerek kalmaz. alanı gerektiği gibi doldurur


Temel kimlik doğrulama için - youtube.com/watch?v=1SP1hgm9JqA . "Üstbilgi formu" sekmesinde, bir "Yetkilendirme" başlığı ekleyin. Yazmaya başladığınızda otomatik öneride bulunacaktır. Değerde Düzenle (kalem) düğmesini tıklayın ve açılır pencereye kimlik doğrulama bilgilerini yazın.
uutsav

10

Ekran görüntüsünden hizmete "kullanıcı" ve "şifre" değerlerini geçirmek istediğinizi görebiliyorum. Yanlış olan istek başlık kısmındaki parametre değerlerini gönderdiniz. Değerler, istek başlığında değil, istek gövdesinde gönderilir. Ayrıca söz diziminiz yanlış. Doğru sözdizimi: {"user":"user_val","password":"password_val"}. Ayrıca içerik türünün ne olduğunu kontrol edin. Hizmetinize ayarladığınız içerik türüyle eşleşmelidir.


7

Bu çok eski bir soru gibi görünüyor, ancak başkalarına yardımcı olması için bir cevap veriyorum. Değişkenleri ikinci görüntüdeki gibi değişkenleri ekleyerek aşağıda gösterildiği gibi form bölümünde veya RAW formatında ikinci ekranda belirtebilirsiniz.

Form Değişkenlerini Belirtin

RAW formatında belirtin

Değişken ve değişken değerleriniz geçerliyse, yanıt bölümünde başarılı bir yanıt görmelisiniz.


Ya bir GET isteğiyse?
Dejell

Content-Type başlığını şu değerle açıkça ayarlamak zorunda kaldım: application / x-www-form-urlencoded
shasi kanth

6

Genel olarak temel kimlik doğrulama için kullanılan kısayol biçimi http://username:password@example.com/path. Ayrıca, kabul başlığını isteğe dahil etmek isteyeceksiniz.

görüntü açıklamasını buraya girin


Teşekkürler. Aşağıdakileri içeren bir yanıt aldım: <p> CSRF doğrulaması başarısız oldu. İstek iptal edildi. </p> Bunu nasıl aşabilirim?
Saqib Ali

Bir API uç noktasına ulaşmıyorsunuz, bunun yerine JavaScript'in ulaşması için bir uç noktaya ulaşıyorsunuz gibi görünüyor.
abraham

Bu genellikle iyi bir çözümdür - UID'niz veya PWD'niz ":" veya "@" sembollerini içermediği sürece.
Blamkin86

Ayrılmış karakterler içeriyorlarsa kullanıcı adını / şifreyi URL kodlamanız gerekebilir.
abraham

HTTPS'de GET komutu için çözümünüzü kullanmaya çalışıyordum ve işe yaramadı. örneğin kullanıcı: @ api.com / v2 / sevkiyatlar curl içinde çalışır. Yanlış olan ne? şifre yok
Dejell,

3

başlık bölümüne yazmalısın

Yetkilendirme: Temel aG9sY67890vbGNpbQ ==

burada temelden sonraki dize, kullanıcı adınızın 64 bit kodlama değeridir: şifre. php başlık değerlerini almanın örneği: echo "Yetkilendirme: Temel". base64_encode ("myUser: myPassword");

nb: Kimlik doğrulama yönteminizin temel olduğunu varsaydım. bu da farklı olabilir.


Soru, özellikle Chrome uzantısı Advanced Rest Client'ta nasıl yapılacağını soruyor.
Shauna

Shauna'nın cevabı doğruydu ve kabul edilen cevap olmalı, ancak sharif'ten gelen bu yorum, Chrome Advanced Rest istemcisinin sizin için kullanıcı ve şifreyi kodlamak için ne yaptığını merak edenler için de yararlıdır. Teşekkürler.
Deemoe

3

Yetkilendirme başlığı ekleyin ve kullanıcı adı ve şifreleri girmek için kalem düğmesine tıklayın

görüntü açıklamasını buraya girin


0

Bu kimlik doğrulama sorununu aşmanın kolay yolu, Fiddler'ı kullanarak kimlik doğrulama jetonunu çalmaktır.

Adımlar

  1. Kemancı ve tarayıcıyı çalıştırın.
  2. Web uygulamasını (web sitesi) açmak ve gerekli kimlik doğrulamasını yapmak için tarayıcıya gidin.
  3. Fiddler'ı açın ve HTTP 200 HTML sayfası isteğini tıklayın. Fiddler kullanarak çerez değerini yakalama
  4. Sağ bölmede, istek başlıklarından tanımlama bilgisi başlığı parametre değerini kopyalayın. görüntü açıklamasını buraya girin
  5. REST Client'ı açın ve "Header form" sekmesine tıklayın ve klip panosundan çerez değerini girin.

GÖNDER düğmesine tıklayın ve sonuçları alacaktır.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.