Hướng dẫn python requests json - python yêu cầu json
Mục lục bài viết:
Show
Các 4thư viện là tiêu chuẩn de facto cho làm các yêu cầu HTTP bằng Python. Nó tóm tắt sự phức tạp của việc thực hiện các yêu cầu đằng sau một API đẹp, đơn giản để bạn có thể tập trung vào việc tương tác với các dịch vụ và sử dụng dữ liệu trong ứng dụng của mình.Trong suốt bài viết này, bạn sẽ thấy một số tính năng hữu ích nhất 4phải cung cấp cũng như cách tùy chỉnh và tối ưu hóa các tính năng đó cho các tình huống khác nhau mà bạn có thể gặp phải. Bạn cũng sẽ học cách sử dụng 4một cách hiệu quả cũng như cách ngăn chặn các yêu cầu đến các dịch vụ bên ngoài làm chậm ứng dụng của bạn.Trong hướng dẫn này, bạn sẽ học cách:
Mặc dù tôi đã cố gắng bao gồm nhiều thông tin nhất mà bạn cần để hiểu các tính năng và ví dụ có trong bài viết này, nhưng tôi giả sử có một kiến thức chung rất cơ bản về HTTP . Điều đó nói rằng, bạn vẫn có thể làm theo tốt. Bây giờ điều đó không còn nữa, hãy đi sâu vào và xem bạn có thể sử dụng như thế nào 4trong ứng dụng của mình!Bắt đầu với >>> response.status_code 200 4Hãy bắt đầu bằng cách cài đặt 4thư viện. Để làm như vậy, hãy chạy lệnh sau:Nếu bạn thích sử dụng Pipenv để quản lý các gói Python , bạn có thể chạy như sau:
Sau khi 4được cài đặt, bạn có thể sử dụng nó trong ứng dụng của mình. Quá trình nhập 4trông giống như sau:Bây giờ bạn đã thiết lập xong, đã đến lúc bắt đầu hành trình của bạn 4. Mục tiêu đầu tiên của bạn sẽ là học cách đưa ra 3yêu cầu.Yêu cầu GETPhản hồi Mã trạng thái Nội dung Tiêu đề
Tham số chuỗi truy vấn Phản hồiMã trạng thái Tiêu đề
Tham số chuỗi truy vấn Mã trạng tháiNội dung Tiêu đề Tham số chuỗi truy vấn Tiêu đề
Tham số chuỗi truy vấn Yêu cầu tiêu đề
Các phương thức HTTP khác 4tiến thêm một bước trong việc đơn giản hóa quy trình này cho bạn. Nếu bạn sử dụng một 4thể hiện trong biểu thức điều kiện, nó sẽ đánh giá 2xem mã trạng thái có nằm giữa 5và 4và 5nếu không.Do đó, bạn có thể đơn giản hóa ví dụ cuối cùng bằng cách viết lại 6câu lệnh:
Hãy nhớ rằng phương pháp này không xác minh rằng mã trạng thái là bằng 5. Lý do cho điều này là các mã trạng thái khác trong phạm vi 5tới 4, chẳng hạn như 0và 1, cũng được coi là thành công theo nghĩa là chúng cung cấp một số phản hồi khả thi.Ví dụ: 2câu trả lời cho bạn biết rằng phản hồi đã thành công, nhưng không có nội dung nào để trả lại trong nội dung thư.Vì vậy, hãy đảm bảo rằng bạn chỉ sử dụng tốc ký thuận tiện này nếu bạn muốn biết yêu cầu nói chung có thành công hay không và sau đó, nếu cần, hãy xử lý phản hồi một cách thích hợp dựa trên mã trạng thái. Giả sử bạn không muốn kiểm tra mã trạng thái của phản hồi trong một 6câu lệnh. Thay vào đó, bạn muốn đưa ra một ngoại lệ nếu yêu cầu không thành công. Bạn có thể làm điều này bằng cách sử dụng 4:
Nếu bạn gọi 4, một 6sẽ được nâng lên cho các mã trạng thái nhất định. Nếu mã trạng thái cho biết một yêu cầu thành công, chương trình sẽ tiếp tục mà không có ngoại lệ nào được nêu ra.Đọc thêm: Nếu bạn không quen thuộc với chuỗi f của Python 3.6 , tôi khuyến khích bạn tận dụng chúng vì chúng là một cách tuyệt vời để đơn giản hóa các chuỗi được định dạng của bạn. Bây giờ, bạn đã biết rất nhiều về cách xử lý mã trạng thái của phản hồi mà bạn nhận được từ máy chủ. Tuy nhiên, khi bạn đưa ra một 3yêu cầu, bạn hiếm khi chỉ quan tâm đến mã trạng thái của phản hồi. Thông thường, bạn muốn xem thêm. Tiếp theo, bạn sẽ thấy cách xem dữ liệu thực tế mà máy chủ đã gửi lại trong phần nội dung của phản hồi.Nội dungPhản hồi của một 3yêu cầu thường có một số thông tin có giá trị, được gọi là trọng tải, trong nội dung thư. Bằng cách sử dụng các thuộc tính và phương pháp của 4, bạn có thể xem tải trọng ở nhiều định dạng khác nhau.Để xem nội dung của phản hồi 0, bạn sử dụng 1:>>>
Mặc dù 1cung cấp cho bạn quyền truy cập vào các byte thô của tải phản hồi, nhưng bạn thường sẽ muốn chuyển đổi chúng thành một chuỗi bằng cách sử dụng mã hóa ký tự như UTF-8 . 7sẽ làm điều đó cho bạn khi bạn truy cập 4:
>>>
Mặc dù 1cung cấp cho bạn quyền truy cập vào các byte thô của tải phản hồi, nhưng bạn thường sẽ muốn chuyển đổi chúng thành một chuỗi bằng cách sử dụng mã hóa ký tự như UTF-8 . 7sẽ làm điều đó cho bạn khi bạn truy cập 4:>>>
Mặc dù 1cung cấp cho bạn quyền truy cập vào các byte thô của tải phản hồi, nhưng bạn thường sẽ muốn chuyển đổi chúng thành một chuỗi bằng cách sử dụng mã hóa ký tự như UTF-8 . 7sẽ làm điều đó cho bạn khi bạn truy cập 4:>>> 0Mặc dù 1cung cấp cho bạn quyền truy cập vào các byte thô của tải phản hồi, nhưng bạn thường sẽ muốn chuyển đổi chúng thành một chuỗi bằng cách sử dụng mã hóa ký tự như UTF-8 . 7sẽ làm điều đó cho bạn khi bạn truy cập 4:Bởi vì việc giải mã 0cho một 6yêu cầu một lược đồ mã hóa, 4sẽ cố gắng đoán mã hóa dựa trên các tiêu đề của phản hồi nếu bạn không chỉ định. Bạn có thể cung cấp mã hóa rõ ràng bằng cách cài đặt 8trước khi truy cập 4:Nếu bạn nhìn vào phản hồi, bạn sẽ thấy rằng nó thực sự là nội dung JSON được tuần tự hóa. Để lấy từ điển, bạn có thể lấy từ điển mà >>> response.encoding = 'utf-8' # Optional: requests infers this internally
>>> response.text
'{"current_user_url":"https://api.github.com/user","current_user_authorizations_html_url":"https://github.com/settings/connections/applications{/client_id}","authorizations_url":"https://api.github.com/authorizations","code_search_url":"https://api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"https://api.github.com/user/emails","emojis_url":"https://api.github.com/emojis","events_url":"https://api.github.com/events","feeds_url":"https://api.github.com/feeds","followers_url":"https://api.github.com/user/followers","following_url":"https://api.github.com/user/following{/target}","gists_url":"https://api.github.com/gists{/gist_id}","hub_url":"https://api.github.com/hub","issue_search_url":"https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"https://api.github.com/issues","keys_url":"https://api.github.com/user/keys","notifications_url":"https://api.github.com/notifications","organization_repositories_url":"https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"https://api.github.com/orgs/{org}","public_gists_url":"https://api.github.com/gists/public","rate_limit_url":"https://api.github.com/rate_limit","repository_url":"https://api.github.com/repos/{owner}/{repo}","repository_search_url":"https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"https://api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"https://api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"https://api.github.com/gists/starred","team_url":"https://api.github.com/teams","user_url":"https://api.github.com/users/{user}","user_organizations_url":"https://api.github.com/user/orgs","user_repositories_url":"https://api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'
6bạn đã lấy >>> response.encoding = 'utf-8' # Optional: requests infers this internally
>>> response.text
'{"current_user_url":"https://api.github.com/user","current_user_authorizations_html_url":"https://github.com/settings/connections/applications{/client_id}","authorizations_url":"https://api.github.com/authorizations","code_search_url":"https://api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"https://api.github.com/user/emails","emojis_url":"https://api.github.com/emojis","events_url":"https://api.github.com/events","feeds_url":"https://api.github.com/feeds","followers_url":"https://api.github.com/user/followers","following_url":"https://api.github.com/user/following{/target}","gists_url":"https://api.github.com/gists{/gist_id}","hub_url":"https://api.github.com/hub","issue_search_url":"https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"https://api.github.com/issues","keys_url":"https://api.github.com/user/keys","notifications_url":"https://api.github.com/notifications","organization_repositories_url":"https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"https://api.github.com/orgs/{org}","public_gists_url":"https://api.github.com/gists/public","rate_limit_url":"https://api.github.com/rate_limit","repository_url":"https://api.github.com/repos/{owner}/{repo}","repository_search_url":"https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"https://api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"https://api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"https://api.github.com/gists/starred","team_url":"https://api.github.com/teams","user_url":"https://api.github.com/users/{user}","user_organizations_url":"https://api.github.com/user/orgs","user_repositories_url":"https://api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'
4và giải mã hóa nó bằng cách sử dụng >>> requests.get('https://api.github.com')
|