Cách kiểm tra REST API bằng cách sử dụng tiện ích mở rộng "Advanced Rest Client" của Chrome


89

Làm theo hướng dẫn tại liên kết bên dưới, tôi đã xây dựng thành công API REST cho ứng dụng Django của mình: http://django-rest-framework.org/tutorial/quickstart .

Tôi có thể kiểm tra nó bằng cách làm như sau từ lời nhắc Unix:

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

Nó hoạt động :)

Tuy nhiên, tôi muốn sử dụng phần mở rộng Chrome Advanced Rest Client để kiểm tra chức năng tương tự này. Tôi đã cài đặt tiện ích mở rộng, nhưng tôi không biết vị trí / cách đặt các trường. Khi tôi đưa ra dự đoán đã học của mình (như bạn có thể thấy trong ảnh chụp màn hình), nó sẽ từ chối thông báo rằng "Thông tin xác thực không được cung cấp"

ảnh chụp màn hình của yêu cầu không thành công

Làm cách nào / ở đâu tôi nên chỉ định các tham số của mình cho API REST?

Câu trả lời:


99

Khả năng phát hiện là kém, nhưng nó khá thông minh trong cách Advanced Rest Client xử lý xác thực cơ bản. Phím tắt abraham được đề cập không hoạt động với tôi, nhưng một chút chọc ngoáy đã tiết lộ cách nó hoạt động.

Điều đầu tiên bạn cần làm là thêm Authorizationtiêu đề: menu

Sau đó, một thứ nhỏ tiện lợi bật lên khi bạn tập trung valueđầu vào (lưu ý hộp "cấu trúc" ở phía dưới bên phải): xây dựng giá trị auth

Nhấp vào nó sẽ xuất hiện một hộp. Nó thậm chí còn có OAuth, nếu bạn muốn! đầu vào thuận tiện

Tada! Nếu bạn để trống trường giá trị khi bạn nhấp vào "cấu trúc", nó sẽ thêm Basicphần vào đó (tôi cho rằng nó cũng sẽ thêm những thứ OAuth cần thiết, nhưng tôi đã không thử điều đó, vì nhu cầu hiện tại của tôi là cơ bản xác thực), vì vậy bạn không cần phải làm gì cả. điền vào trường khi cần thiết


Để xác thực cơ bản - youtube.com/watch?v=1SP1hgm9JqA . Trong tab "Biểu mẫu tiêu đề", hãy thêm tiêu đề "Ủy quyền". Nó sẽ tự động đề xuất khi bạn bắt đầu nhập. Trong giá trị, nhấp vào nút Chỉnh sửa (bút chì) và nhập thông tin xác thực vào cửa sổ bật lên.
uutsav

10

Từ ảnh chụp màn hình, tôi có thể thấy rằng bạn muốn chuyển các giá trị "người dùng" và "mật khẩu" cho dịch vụ. Bạn đã gửi các giá trị tham số trong phần tiêu đề yêu cầu bị sai. Các giá trị được gửi trong nội dung yêu cầu chứ không phải trong tiêu đề yêu cầu. Ngoài ra cú pháp của bạn cũng sai. Cú pháp đúng là: {"user":"user_val","password":"password_val"}. Đồng thời kiểm tra loại nội dung là gì. Nó phải phù hợp với loại nội dung bạn đã đặt cho dịch vụ của mình.


7

Đây có vẻ là một câu hỏi rất cũ, nhưng tôi đang cung cấp câu trả lời để nó có thể giúp ích cho những người khác. Bạn có thể chỉ định các biến trong màn hình thứ hai trong phần biểu mẫu, như được hiển thị bên dưới hoặc ở định dạng RAW bằng cách nối các biến như được hiển thị trong hình ảnh thứ hai.

Chỉ định các biến biểu mẫu

Chỉ định ở định dạng RAW

Nếu biến và giá trị biến của bạn hợp lệ, bạn sẽ thấy phản hồi thành công trong phần phản hồi.


nếu đó là yêu cầu GET thì sao?
Dejell

Tôi đã phải đặt tiêu đề Content-Type rõ ràng, với giá trị: application / x-www-form-urlencoded
shasi kanth

6

Định dạng phím tắt thường được sử dụng cho xác thực cơ bản là http://username:password@example.com/path. Bạn cũng sẽ muốn bao gồm tiêu đề chấp nhận trong yêu cầu.

nhập mô tả hình ảnh ở đây


Cảm ơn. Tôi nhận được phản hồi bao gồm những điều sau: <p> Xác minh CSRF không thành công. Yêu cầu đã bị hủy bỏ. </p> Làm cách nào để xử lý yêu cầu đó?
Saqib Ali

Có vẻ như bạn đang không đạt được điểm cuối API mà thay vào đó bạn đang đánh vào điểm cuối để JavaScript đạt được.
abraham

Đây thường là một giải pháp tốt - trừ khi UID hoặc PWD của bạn bao gồm các ký hiệu ":" hoặc "@".
Blamkin86

Bạn có thể phải mã hóa URL tên người dùng / mật khẩu nếu chúng chứa các ký tự dành riêng.
abraham

Tôi đã cố gắng sử dụng giải pháp của bạn cho lệnh GET trên HTTPS và nó không hoạt động. ví dụ: người dùng: @ api.com / v2 / lô hàng Nó hoạt động trong cuộn. chuyện gì thế? không có mật khẩu
Dejell

3

trong phần tiêu đề bạn phải viết

Ủy quyền: Cơ bản aG9sY67890vbGNpbQ ==

trong đó chuỗi sau cơ bản là giá trị mã hóa 64 bit của tên người dùng: mật khẩu của bạn. ví dụ php về nhận các giá trị tiêu đề là: echo "Authorization: Basic". base64_encode ("myUser: myPassword");

nb: Tôi cho rằng phương pháp xác thực của bạn là cơ bản. mà cũng có thể khác nhau.


Câu hỏi đặc biệt hỏi về cách thực hiện trong phần mở rộng Chrome Advanced Rest Client.
Shauna

Câu trả lời của Shauna là đúng và phải là câu trả lời được chấp nhận, nhưng nhận xét này từ sharif cũng hữu ích cho những ai tò mò muốn biết ứng dụng khách Chrome Advanced Rest đã làm gì để mã hóa người dùng và mật khẩu cho bạn. Cảm ơn.
Deemoe

3

Thêm tiêu đề ủy quyền và nhấp vào nút bút chì để nhập tên người dùng và mật khẩu

nhập mô tả hình ảnh ở đây


0

Cách dễ dàng để vượt qua vấn đề xác thực này là đánh cắp mã thông báo xác thực bằng Fiddler.

Các bước

  1. Khởi động fiddler và trình duyệt.
  2. Điều hướng trình duyệt để mở ứng dụng web (trang web) và thực hiện xác thực cần thiết.
  3. Mở Fiddler và nhấp vào yêu cầu trang HTML 200 HTTP. Thu thập giá trị cookie bằng Fiddler
  4. Trên ngăn bên phải, từ tiêu đề yêu cầu, hãy sao chép giá trị tham số tiêu đề cookie. nhập mô tả hình ảnh ở đây
  5. Mở REST Client và nhấp vào tab "Header form" và cung cấp giá trị cookie từ bảng clip.

Nhấp vào nút GỬI và nó sẽ lấy kết quả.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.