- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我“.get”一个请求并像这样处理响应:
resp = requests.get('url')
resp = resp.text
.. # do stuff with resp
阅读包的文档后,我看到有一个钩子(Hook)功能允许我这样做:
def process_r(resp, **kwargs): .. do stuff with resp
resp = requests.get('url', hooks = {'response': process_r})
我的问题:
什么时候应该使用钩子(Hook)?或者,我为什么要使用钩子(Hook)?
我希望在使用请求 resp.text
过程返回请求的响应后启动一个对象(解析器)。
对于这种情况,什么是 Pythonic 的正确方法?
Cảm ơn
câu trả lời hay nhất
钩子(Hook)距离“魔术”不到一百万英里。它们的作用是使您的代码可能做出让其他人感到惊讶的事情(从而违反“显式优于隐式”)。
因此, Hook 实际上应该仅用于驱动使事情Hơn可预测的行为,而不是更少。例如,Requests 在内部使用它们来 handle 401 responses用于各种身份验证。
因此,您应该遵循钩子(Hook)的限制。 relevant part of the documentation声明钩子(Hook)需要返回一个 Phản ứng
对象。这会导致一些明显的可能行为:您可以发出额外的请求(如上面的 401 Hook ),或者您可以以某种方式改变 Phản ứng
。
启动一个解析器正是那种你不应该用钩子(Hook)做的事情。它应该是您业务逻辑的一部分。我会改为编写一个效用函数。
关于Python 请求 : Hook or no Hook?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17773028/
Tôi đang cố gắng thu thập dữ liệu thời tiết lịch sử từ trang web này: http://www.hko.gov.hk/cis/dailyExtract_uc.htm?y=2016&m=1 Sau khi đọc về các cuộc gọi AJAX, tôi thấy rằng dữ liệu yêu cầu là Chính xác
Tôi có hai yêu cầu của người đưa thư x,y đạt đến hai điểm cuối api còn lại khác nhau trong X,Y. x sẽ cung cấp cho tôi mã thông báo xác thực được yêu cầu để thực hiện yêu cầu y. Làm cách nào để thực hiện yêu cầu x trong yêu cầu y? Đó là
Tôi sử dụng thư viện yêu cầu để liên lạc với các máy chủ khác thông qua API. Nhưng bây giờ tôi cần gửi nhiều yêu cầu POST (10 hoặc nhiều hơn) cùng một lúc và chỉ tiến triển thêm nếu tất cả phản hồi đều chính xác. Thông thường cú pháp trông giống như thế này: var optio
Bối cảnh: Khi người dùng nhấp vào nút, lớp của nó sẽ chuyển đổi giữa class1 và class2 và dữ liệu này được gửi qua AJAX. Để xác nhận rằng dữ liệu này đã được lưu, máy chủ sẽ phản hồi bằng js (nút cập nhật HTML). Vấn đề: Nếu người dùng nhấp vào nút
Tôi đang sử dụng thư viện yêu cầu trong Node.js cho API chuyển văn bản thành giọng nói của Google. Tôi muốn in ra yêu cầu được gửi, như trong ví dụ về python Đây là mã của tôi: const request = requi.
Tôi sử dụng các yêu cầu rất nhiều. Gần đây tôi phát hiện ra còn có request2 và các request3 sắp tới. Mặc dù có một trang đề cập ngắn gọn nội dung của request3 nhưng tôi vẫn chưa xác định được yêu cầu.
Tôi đang cố gắng gửi hình ảnh tới API của mình và sau đó nhận được kết quả từ nó. Ví dụ: tôi gửi tệp hình ảnh bmp bằng cách sử dụng file = {"img": open("img.bmp)} r = request.post(url,
Tôi thấy rằng Google Cloud đảm bảo rằng mọi yêu cầu di chuyển ra khỏi môi trường vật lý của nó đều được thực thi mã hóa, hãy xem (trang 6 dưới tiêu đề VM đến VM) liên kết này Azure (và AWS) có tuân theo quy trình tương tự không? Nếu ai đó có thể chỉ cho tôi
Tôi có ứng dụng ASP.NET MVC và tôi đang cố gắng sử dụng jQuery trong hàm javascript để tạo một loạt hành động. Chức năng này bao gồm ba phần. Điều tôi muốn làm là: Nếu đáp ứng một số điều kiện nhất định thì tôi muốn thực hiện jQu đồng bộ
Tôi không thể tìm thấy cách thực hiện yêu cầu nhận http, vì vậy tôi hy vọng các bạn có thể giúp tôi. Ý tưởng là bắt đầu từ một url bên ngoài (ví dụ: https://api.twitter.com/1.1/search/tweets.json?q=tw
Ứng dụng của tôi chỉ cần sử dụng quyền "READ_SMS". Vấn đề của tôi là trên Android 6.0, khi tôi cần sử dụng hệ thống cấp phép mới, nó sẽ yêu cầu người dùng "gửi và xem tin nhắn văn bản". Đây là mã của tôi: Hoạt độngCompat.re
Mã giao diện người dùng của tôi: { this.searchInput = input; }}/> Tìm kiếm // phương thức tìm kiếm: const baseUrl = 'http://localho
Tôi có dịch vụ WCF được ứng dụng AJAX và C# sử dụng và tôi cần gửi tham số qua tiêu đề yêu cầu HTTP. Trên AJAX của tôi, tôi đã thêm phần sau và nó hoạt động: $.ajax({
Tôi đang cố gắng hiểu cách viết mã bằng lời hứa. Vui lòng kiểm tra mã của tôi. Điều này có đúng không? Node.js + yêu cầu: request(url, function (lỗi, phản hồi, nội dung)
Tôi cần thử gửi lại yêu cầu GWT RPC trong trường hợp không thành công (bất kỳ mã phản hồi nào ngoài HTTP 200). Nguyên nhân rất phức tạp nên tôi sẽ không đi sâu vào chi tiết. Cho đến nay tôi đang xử lý tất cả các phản hồi yêu cầu ở cùng một nơi như thế này: // Chúng tôi
Tôi muốn biểu mẫu được gửi khi người dùng nhấp vào nút gửi. Tuy nhiên, ngay trước khi điều này xảy ra, tôi muốn một cửa sổ bật lên và để họ điền một số dữ liệu. Khi họ thực hiện việc này và đóng cửa sổ con, tôi muốn thực hiện yêu cầu POST. Điều này có thể thực hiện được không? Nếu có thể thì sao? TÔI
Các trang web như Facebook sử dụng tải js "lười biếng". Khi bạn phải cân nhắc rằng tôi có một máy chủ có nhiều lưu lượng truy cập. Tôi quan tâm - cái nào tốt hơn? Khi tôi thực hiện nhiều yêu cầu HTTP hơn cùng một lúc - trang tải chậm hơn (do các hạn chế (một
Bộ chứa Servlet có tạo các đối tượng ServletRequest và Response hoặc đối tượng Http không? Nếu là ServletRequest thì chuyển đổi nó thành HttpServletReq trước khi gọi phương thức dịch vụ
Đây là một đoạn trích từ bài viết trên Wikipedia: Ngược lại với phương thức yêu cầu GET trong đó chỉ có URL và tiêu đề được gửi đến dịch vụ
Tôi có một vòng lặp tạo yêu cầu bài đăng HTTP mỗi khi nó lặp lại. for(let i = 1; i console.log("thành công ở " + i), error => con
Tôi là một lập trình viên xuất sắc, rất giỏi!