Python yêu cầu đăng dữ liệu biểu mẫu

con trăn. Yêu cầu thư viện của Python
Key learning qua video
Lập trình C Java C# SQL Server PHP HTML5-CSS3-JavaScript

Mục lục bài viết

  • Bắt đầu với các yêu cầu
  • GET request
  • phản hồi
    • Status code
    • Nội dung
    • tiêu đề
  • Tham số chuỗi truy vấn
  • Yêu cầu tiêu đề
  • HTTP method other
  • Nội dung thư
  • Check your request
  • Xác thực
  • Xác minh chứng chỉ SSL
  • Hiệu lực
    • Hết giờ
    • Phiên bản đối tượng
    • Số lần thử tối đa
  • Phần kết luận

Các 

>>> requests.get['//api.github.com']

6thư viện là tiêu chuẩn thực tế để thực hiện các yêu cầu HTTP bằng Python. Nó tóm tắt sự phức tạp của công việc thực hiện các yêu cầu phía sau một API đẹp, đơn giản để bạn có thể tập trung vào công 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 

>>> requests.get['//api.github.com']

6 phả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 sẽ học cách sử dụng 
>>> requests.get['//api.github.com']

6mộ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

  • gửi yêu cầu theo các phương thức HTTP phổ biến nhất
  • Tùy chỉnh tiêu đề và dữ liệu yêu cầu của bạn, sử dụng chuỗi truy vấn và nội dung thư
  • Kiểm tra dữ liệu từ các yêu cầu và phản hồi của bạn
  • Thực hiện các yêu cầu xác thực xác thực
  • Định cấu hình các yêu cầu của bạn để giúp ngăn ứng dụng của bạn sao lưu hoặc làm chậm

Mặc dù tôi đã cố gắng bao gồm nhiều thông tin tốt 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 điều 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 

>>> requests.get['//api.github.com']

6trong ứng dụng của mình

Bắt đầu với 
>>> requests.get['//api.github.com']

6

Hãy bắt đầu bằng cách cài đặt 

>>> requests.get['//api.github.com']

6thư viện. Để làm như vậy, hãy chạy lệnh sau

$ pip install requests

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

$ pipenv install requests

Sau khi 

>>> requests.get['//api.github.com']

6đượ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 
>>> requests.get['//api.github.com']

6trông giống như sau

import requests

Bây giờ bạn đã thiết lập xong, đã đến lúc bắt đầu hành trình của bạn 

>>> requests.get['//api.github.com']

6. Mục tiêu đầu tiên của bạn sẽ là học cách đưa ra 
>>> response = requests.get['//api.github.com']
5yêu cầu

GET request

ví dụ như 

>>> response = requests.get['//api.github.com']
5và 
>>> response = requests.get['//api.github.com']
7, xác định hành động bạn đang cố gắng thực hiện khi thực hiện một yêu cầu HTTP. Bên cạnh đó 
>>> response = requests.get['//api.github.com']
5và 
>>> response = requests.get['//api.github.com']
7, có một số phương pháp thông thường khác mà bạn sẽ sử dụng sau này trong hướng dẫn này

Một trong các phương thức HTTP phổ biến nhất là 

>>> response = requests.get['//api.github.com']
5. Các 
>>> response = requests.get['//api.github.com']
5 phương pháp chỉ ra rằng bạn đang cố gắng để có được hoặc lấy dữ liệu từ một nguồn xác định. Để thực hiện một 
>>> response = requests.get['//api.github.com']
5yêu cầu, hãy gọi 
>>> response.status_code
200
3

Để kiểm tra điều này, bạn có thể 

>>> response = requests.get['//api.github.com']
5yêu cầu  của GitHub bằng cách gọi 
>>> response.status_code
200
5với URL sau

>>>

>>> requests.get['//api.github.com']

Xin chúc mừng. Bạn đã thực hiện yêu cầu đầu tiên của mình. Hãy đi sâu hơn một chút về phản hồi của yêu cầu đó

phản hồi

>>> response.status_code
200
6là một đối tượng mạnh mẽ để kiểm tra kết quả của yêu cầu. Hãy thực hiện lại yêu cầu đó một lần nữa, nhưng lần này lưu trữ giá trị trả về trong một biến để bạn có thể xem xét kỹ hơn các thuộc tính và hành vi của nó

>>>

>>> response = requests.get['//api.github.com']

Trong ví dụ này, bạn đã nắm bắt được giá trị trả về của 

>>> response.status_code
200
5, là phiên bản của 
>>> response.status_code
200
6và lưu trữ nó trong một biến được gọi là 
>>> response.status_code
200
9. Bây giờ bạn có thể sử dụng 
>>> response.status_code
200
9 để xem rất nhiều thông tin về kết quả của 
>>> response = requests.get['//api.github.com']
5yêu cầu của bạn

Status code

Ban đầu thông báo bit mà bạn có thể thu thập 

>>> response.status_code
200
6là mã trạng thái. Mã trạng thái thông báo cho bạn về trạng thái của yêu cầu

Ví dụ.

if response.status_code == 200:
    print['Success!']
elif response.status_code == 404:
    print['Not Found.']
3trạng thái có nghĩa là yêu cầu của bạn đã thành công, trong khi
if response.status_code == 200:
    print['Success!']
elif response.status_code == 404:
    print['Not Found.']
4trạng thái có nghĩa là tài nguyên bạn đang tìm kiếm không tìm thấy. Cũng có nhiều mã trạng thái có thể có khác nhau để cung cấp cho bạn thông tin chi tiết cụ thể về những gì đã xảy ra với yêu cầu của bạn

Bằng cách truy cập 

if response.status_code == 200:
    print['Success!']
elif response.status_code == 404:
    print['Not Found.']
5, bạn có thể thấy mã trạng thái mà máy chủ trả về

>>>

>>> response.status_code
200

if response.status_code == 200:
    print['Success!']
elif response.status_code == 404:
    print['Not Found.']
5trả về một 
if response.status_code == 200:
    print['Success!']
elif response.status_code == 404:
    print['Not Found.']
7, có nghĩa là yêu cầu của bạn đã thành công và máy chủ đã phản hồi với dữ liệu bạn đang yêu cầu

Đôi khi, bạn có thể muốn sử dụng thông tin này để đưa ra quyết định trong mã của mình

if response.status_code == 200:
    print['Success!']
elif response.status_code == 404:
    print['Not Found.']

Với logic này, nếu máy chủ trả về

if response.status_code == 200:
    print['Success!']
elif response.status_code == 404:
    print['Not Found.']
7mã trạng thái, chương trình của bạn sẽ ở 
if response.status_code == 200:
    print['Success!']
elif response.status_code == 404:
    print['Not Found.']
9. Nếu kết quả là một 
if response:
    print['Success!']
else:
    print['An error has occurred.']
0, chương trình của bạn sẽ ở 
if response:
    print['Success!']
else:
    print['An error has occurred.']
1

>>> requests.get['//api.github.com']

6tiến thêm một bước trong công việc đơn giản hóa quy trình này cho bạn. Nếu bạn sử dụng một 
>>> response.status_code
200
6có thể thể hiện trong biểu thức điều kiện, nó sẽ đánh giá 
if response:
    print['Success!']
else:
    print['An error has occurred.']
4xem mã trạng thái có nằm giữa 
if response.status_code == 200:
    print['Success!']
elif response.status_code == 404:
    print['Not Found.']
7và 
if response:
    print['Success!']
else:
    print['An error has occurred.']
6và 
if response:
    print['Success!']
else:
    print['An error has occurred.']
7 nế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 

if response:
    print['Success!']
else:
    print['An error has occurred.']
8câu lệnh

if response:
    print['Success!']
else:
    print['An error has occurred.']

Chi tiết kỹ thuật. Điều này được thực hiện vì có thể về ____20_______6

Điều này có nghĩa là hành động theo mặc định của 

>>> response.status_code
200
6 đã được xác định lại để tính đến mã trạng thái khi xác định giá trị thực của đối tượng

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 

if response.status_code == 200:
    print['Success!']
elif response.status_code == 404:
    print['Not Found.']
7. Lý do cho điều này là các mã trạng thái khác nhau trong phạm vi 
if response.status_code == 200:
    print['Success!']
elif response.status_code == 404:
    print['Not Found.']
7đến 
if response:
    print['Success!']
else:
    print['An error has occurred.']
6, chẳng hạn như 
import requests
from requests.exceptions import HTTPError

for url in ['//api.github.com', '//api.github.com/invalid']:
    try:
        response = requests.get[url]

        # If the response was successful, no Exception will be raised
        response.raise_for_status[]
    except HTTPError as http_err:
        print[f'HTTP error occurred: {http_err}']  # Python 3.6
    except Exception as err:
        print[f'Other error occurred: {err}']  # Python 3.6
    else:
        print['Success!']
5và 
import requests
from requests.exceptions import HTTPError

for url in ['//api.github.com', '//api.github.com/invalid']:
    try:
        response = requests.get[url]

        # If the response was successful, no Exception will be raised
        response.raise_for_status[]
    except HTTPError as http_err:
        print[f'HTTP error occurred: {http_err}']  # Python 3.6
    except Exception as err:
        print[f'Other error occurred: {err}']  # Python 3.6
    else:
        print['Success!']
6, cũng được coi là thành công theo nghĩa là chúng tôi cung cấp một số phản hồi khả thi

Ví dụ.

import requests
from requests.exceptions import HTTPError

for url in ['//api.github.com', '//api.github.com/invalid']:
    try:
        response = requests.get[url]

        # If the response was successful, no Exception will be raised
        response.raise_for_status[]
    except HTTPError as http_err:
        print[f'HTTP error occurred: {http_err}']  # Python 3.6
    except Exception as err:
        print[f'Other error occurred: {err}']  # Python 3.6
    else:
        print['Success!']
7câ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 chắc chắn 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 

if response:
    print['Success!']
else:
    print['An error has occurred.']
8câ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 
import requests
from requests.exceptions import HTTPError

for url in ['//api.github.com', '//api.github.com/invalid']:
    try:
        response = requests.get[url]

        # If the response was successful, no Exception will be raised
        response.raise_for_status[]
    except HTTPError as http_err:
        print[f'HTTP error occurred: {http_err}']  # Python 3.6
    except Exception as err:
        print[f'Other error occurred: {err}']  # Python 3.6
    else:
        print['Success!']
9

import requests
from requests.exceptions import HTTPError

for url in ['//api.github.com', '//api.github.com/invalid']:
    try:
        response = requests.get[url]

        # If the response was successful, no Exception will be raised
        response.raise_for_status[]
    except HTTPError as http_err:
        print[f'HTTP error occurred: {http_err}']  # Python 3.6
    except Exception as err:
        print[f'Other error occurred: {err}']  # Python 3.6
    else:
        print['Success!']

Nếu bạn gọi 

import requests
from requests.exceptions import HTTPError

for url in ['//api.github.com', '//api.github.com/invalid']:
    try:
        response = requests.get[url]

        # If the response was successful, no Exception will be raised
        response.raise_for_status[]
    except HTTPError as http_err:
        print[f'HTTP error occurred: {http_err}']  # Python 3.6
    except Exception as err:
        print[f'Other error occurred: {err}']  # Python 3.6
    else:
        print['Success!']
9, một 
>>> response = requests.get['//api.github.com']
>>> response.content
b'{"current_user_url":"//api.github.com/user","current_user_authorizations_html_url":"//github.com/settings/connections/applications{/client_id}","authorizations_url":"//api.github.com/authorizations","code_search_url":"//api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"//api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"//api.github.com/user/emails","emojis_url":"//api.github.com/emojis","events_url":"//api.github.com/events","feeds_url":"//api.github.com/feeds","followers_url":"//api.github.com/user/followers","following_url":"//api.github.com/user/following{/target}","gists_url":"//api.github.com/gists{/gist_id}","hub_url":"//api.github.com/hub","issue_search_url":"//api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"//api.github.com/issues","keys_url":"//api.github.com/user/keys","notifications_url":"//api.github.com/notifications","organization_repositories_url":"//api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"//api.github.com/orgs/{org}","public_gists_url":"//api.github.com/gists/public","rate_limit_url":"//api.github.com/rate_limit","repository_url":"//api.github.com/repos/{owner}/{repo}","repository_search_url":"//api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"//api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"//api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"//api.github.com/gists/starred","team_url":"//api.github.com/teams","user_url":"//api.github.com/users/{user}","user_organizations_url":"//api.github.com/user/orgs","user_repositories_url":"//api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"//api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'
1 sẽ được nâng cấp theo mã trạng thái nhất định. Nếu mã trạng thái cho một yêu cầu thành công được biết, chương trình sẽ tiếp tục mà không có bất kỳ ngoại lệ nào được nêu ra

Đọc thêm. If you not quen thuộc với chuỗi f của Python 3. 6 , tôi khuyến khích bạn tận hưởng chúng vì chúng là một cách tuyệt vời để đơn giản hóa các chuỗi đị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 

>>> response = requests.get['//api.github.com']
5yêu cầu, bạn xa lạ 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 dung

Phản hồi của một 

>>> response = requests.get['//api.github.com']
5yê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 
>>> response.status_code
200
6, 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 

>>> response = requests.get['//api.github.com']
>>> response.content
b'{"current_user_url":"//api.github.com/user","current_user_authorizations_html_url":"//github.com/settings/connections/applications{/client_id}","authorizations_url":"//api.github.com/authorizations","code_search_url":"//api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"//api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"//api.github.com/user/emails","emojis_url":"//api.github.com/emojis","events_url":"//api.github.com/events","feeds_url":"//api.github.com/feeds","followers_url":"//api.github.com/user/followers","following_url":"//api.github.com/user/following{/target}","gists_url":"//api.github.com/gists{/gist_id}","hub_url":"//api.github.com/hub","issue_search_url":"//api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"//api.github.com/issues","keys_url":"//api.github.com/user/keys","notifications_url":"//api.github.com/notifications","organization_repositories_url":"//api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"//api.github.com/orgs/{org}","public_gists_url":"//api.github.com/gists/public","rate_limit_url":"//api.github.com/rate_limit","repository_url":"//api.github.com/repos/{owner}/{repo}","repository_search_url":"//api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"//api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"//api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"//api.github.com/gists/starred","team_url":"//api.github.com/teams","user_url":"//api.github.com/users/{user}","user_organizations_url":"//api.github.com/user/orgs","user_repositories_url":"//api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"//api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'
5, bạn sử dụng 
>>> response = requests.get['//api.github.com']
>>> response.content
b'{"current_user_url":"//api.github.com/user","current_user_authorizations_html_url":"//github.com/settings/connections/applications{/client_id}","authorizations_url":"//api.github.com/authorizations","code_search_url":"//api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"//api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"//api.github.com/user/emails","emojis_url":"//api.github.com/emojis","events_url":"//api.github.com/events","feeds_url":"//api.github.com/feeds","followers_url":"//api.github.com/user/followers","following_url":"//api.github.com/user/following{/target}","gists_url":"//api.github.com/gists{/gist_id}","hub_url":"//api.github.com/hub","issue_search_url":"//api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"//api.github.com/issues","keys_url":"//api.github.com/user/keys","notifications_url":"//api.github.com/notifications","organization_repositories_url":"//api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"//api.github.com/orgs/{org}","public_gists_url":"//api.github.com/gists/public","rate_limit_url":"//api.github.com/rate_limit","repository_url":"//api.github.com/repos/{owner}/{repo}","repository_search_url":"//api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"//api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"//api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"//api.github.com/gists/starred","team_url":"//api.github.com/teams","user_url":"//api.github.com/users/{user}","user_organizations_url":"//api.github.com/user/orgs","user_repositories_url":"//api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"//api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'
6

>>>

>>> response = requests.get['//api.github.com']
>>> response.content
b'{"current_user_url":"//api.github.com/user","current_user_authorizations_html_url":"//github.com/settings/connections/applications{/client_id}","authorizations_url":"//api.github.com/authorizations","code_search_url":"//api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"//api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"//api.github.com/user/emails","emojis_url":"//api.github.com/emojis","events_url":"//api.github.com/events","feeds_url":"//api.github.com/feeds","followers_url":"//api.github.com/user/followers","following_url":"//api.github.com/user/following{/target}","gists_url":"//api.github.com/gists{/gist_id}","hub_url":"//api.github.com/hub","issue_search_url":"//api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"//api.github.com/issues","keys_url":"//api.github.com/user/keys","notifications_url":"//api.github.com/notifications","organization_repositories_url":"//api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"//api.github.com/orgs/{org}","public_gists_url":"//api.github.com/gists/public","rate_limit_url":"//api.github.com/rate_limit","repository_url":"//api.github.com/repos/{owner}/{repo}","repository_search_url":"//api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"//api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"//api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"//api.github.com/gists/starred","team_url":"//api.github.com/teams","user_url":"//api.github.com/users/{user}","user_organizations_url":"//api.github.com/user/orgs","user_repositories_url":"//api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"//api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'

Mặc dù 

>>> response = requests.get['//api.github.com']
>>> response.content
b'{"current_user_url":"//api.github.com/user","current_user_authorizations_html_url":"//github.com/settings/connections/applications{/client_id}","authorizations_url":"//api.github.com/authorizations","code_search_url":"//api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"//api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"//api.github.com/user/emails","emojis_url":"//api.github.com/emojis","events_url":"//api.github.com/events","feeds_url":"//api.github.com/feeds","followers_url":"//api.github.com/user/followers","following_url":"//api.github.com/user/following{/target}","gists_url":"//api.github.com/gists{/gist_id}","hub_url":"//api.github.com/hub","issue_search_url":"//api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"//api.github.com/issues","keys_url":"//api.github.com/user/keys","notifications_url":"//api.github.com/notifications","organization_repositories_url":"//api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"//api.github.com/orgs/{org}","public_gists_url":"//api.github.com/gists/public","rate_limit_url":"//api.github.com/rate_limit","repository_url":"//api.github.com/repos/{owner}/{repo}","repository_search_url":"//api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"//api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"//api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"//api.github.com/gists/starred","team_url":"//api.github.com/teams","user_url":"//api.github.com/users/{user}","user_organizations_url":"//api.github.com/user/orgs","user_repositories_url":"//api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"//api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'
6cung 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 muốn chuyển đổi chúng thành một chuỗi bằng cách sử dụng ký tự mã hóa như UTF-8.
>>> response.status_code
200
9 sẽ làm điều đó cho bạn khi bạn truy cập 
>>> response = requests.get['//api.github.com']
>>> response.content
b'{"current_user_url":"//api.github.com/user","current_user_authorizations_html_url":"//github.com/settings/connections/applications{/client_id}","authorizations_url":"//api.github.com/authorizations","code_search_url":"//api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"//api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"//api.github.com/user/emails","emojis_url":"//api.github.com/emojis","events_url":"//api.github.com/events","feeds_url":"//api.github.com/feeds","followers_url":"//api.github.com/user/followers","following_url":"//api.github.com/user/following{/target}","gists_url":"//api.github.com/gists{/gist_id}","hub_url":"//api.github.com/hub","issue_search_url":"//api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"//api.github.com/issues","keys_url":"//api.github.com/user/keys","notifications_url":"//api.github.com/notifications","organization_repositories_url":"//api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"//api.github.com/orgs/{org}","public_gists_url":"//api.github.com/gists/public","rate_limit_url":"//api.github.com/rate_limit","repository_url":"//api.github.com/repos/{owner}/{repo}","repository_search_url":"//api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"//api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"//api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"//api.github.com/gists/starred","team_url":"//api.github.com/teams","user_url":"//api.github.com/users/{user}","user_organizations_url":"//api.github.com/user/orgs","user_repositories_url":"//api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"//api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'
9

>>>

$ pipenv install requests
0

Bởi vì việc giải mã 

>>> response = requests.get['//api.github.com']
>>> response.content
b'{"current_user_url":"//api.github.com/user","current_user_authorizations_html_url":"//github.com/settings/connections/applications{/client_id}","authorizations_url":"//api.github.com/authorizations","code_search_url":"//api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"//api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"//api.github.com/user/emails","emojis_url":"//api.github.com/emojis","events_url":"//api.github.com/events","feeds_url":"//api.github.com/feeds","followers_url":"//api.github.com/user/followers","following_url":"//api.github.com/user/following{/target}","gists_url":"//api.github.com/gists{/gist_id}","hub_url":"//api.github.com/hub","issue_search_url":"//api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"//api.github.com/issues","keys_url":"//api.github.com/user/keys","notifications_url":"//api.github.com/notifications","organization_repositories_url":"//api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"//api.github.com/orgs/{org}","public_gists_url":"//api.github.com/gists/public","rate_limit_url":"//api.github.com/rate_limit","repository_url":"//api.github.com/repos/{owner}/{repo}","repository_search_url":"//api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"//api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"//api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"//api.github.com/gists/starred","team_url":"//api.github.com/teams","user_url":"//api.github.com/users/{user}","user_organizations_url":"//api.github.com/user/orgs","user_repositories_url":"//api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"//api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'
5cho một 
$ pipenv install requests
01yêu cầu một lược đồ mã hóa, 
>>> requests.get['//api.github.com']

6 sẽ cố gắng đoán dựa vào các tiêu đề của sự 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 
$ pipenv install requests
03 trước khi truy cập 
>>> response = requests.get['//api.github.com']
>>> response.content
b'{"current_user_url":"//api.github.com/user","current_user_authorizations_html_url":"//github.com/settings/connections/applications{/client_id}","authorizations_url":"//api.github.com/authorizations","code_search_url":"//api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"//api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"//api.github.com/user/emails","emojis_url":"//api.github.com/emojis","events_url":"//api.github.com/events","feeds_url":"//api.github.com/feeds","followers_url":"//api.github.com/user/followers","following_url":"//api.github.com/user/following{/target}","gists_url":"//api.github.com/gists{/gist_id}","hub_url":"//api.github.com/hub","issue_search_url":"//api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"//api.github.com/issues","keys_url":"//api.github.com/user/keys","notifications_url":"//api.github.com/notifications","organization_repositories_url":"//api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"//api.github.com/orgs/{org}","public_gists_url":"//api.github.com/gists/public","rate_limit_url":"//api.github.com/rate_limit","repository_url":"//api.github.com/repos/{owner}/{repo}","repository_search_url":"//api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"//api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"//api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"//api.github.com/gists/starred","team_url":"//api.github.com/teams","user_url":"//api.github.com/users/{user}","user_organizations_url":"//api.github.com/user/orgs","user_repositories_url":"//api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"//api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'
9

>>>

$ pipenv install requests
1

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à 

$ pipenv install requests
01bạn đã lấy 
>>> response = requests.get['//api.github.com']
>>> response.content
b'{"current_user_url":"//api.github.com/user","current_user_authorizations_html_url":"//github.com/settings/connections/applications{/client_id}","authorizations_url":"//api.github.com/authorizations","code_search_url":"//api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"//api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"//api.github.com/user/emails","emojis_url":"//api.github.com/emojis","events_url":"//api.github.com/events","feeds_url":"//api.github.com/feeds","followers_url":"//api.github.com/user/followers","following_url":"//api.github.com/user/following{/target}","gists_url":"//api.github.com/gists{/gist_id}","hub_url":"//api.github.com/hub","issue_search_url":"//api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"//api.github.com/issues","keys_url":"//api.github.com/user/keys","notifications_url":"//api.github.com/notifications","organization_repositories_url":"//api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"//api.github.com/orgs/{org}","public_gists_url":"//api.github.com/gists/public","rate_limit_url":"//api.github.com/rate_limit","repository_url":"//api.github.com/repos/{owner}/{repo}","repository_search_url":"//api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"//api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"//api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"//api.github.com/gists/starred","team_url":"//api.github.com/teams","user_url":"//api.github.com/users/{user}","user_organizations_url":"//api.github.com/user/orgs","user_repositories_url":"//api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"//api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'
9và giải mã hóa nó bằng cách sử dụng. Tuy nhiên, một cách đơn giản hơn để thực hiện nhiệm vụ này là sử dụng 
$ pipenv install requests
08

>>>

$ pipenv install requests
2

Các _______7_______09giá trị trả lại 

$ pipenv install requests
08là một cuốn từ điển, vì vậy bạn có thể truy cập các giá trị trong đối tượng bằng chìa khóa

Bạn có thể thực hiện nhiều điều chỉnh với mã trạng thái và nội dung thư. Tuy nhiên, nếu bạn cần thêm thông tin, chẳng hạn như siêu dữ liệu về phản hồi chính, bạn sẽ cần xem xét các tiêu đề của phản hồi

tiêu đề

Tiêu đề phản hồi có thể cung cấp cho bạn thông tin hữu ích, giả định giới hạn như loại nội dung của tải trọng phản hồi và giới hạn thời gian về thời gian lưu phản hồi vào bộ nhớ cache. Để xem các tiêu đề này, hãy truy cập 

$ pipenv install requests
11

>>>

$ pipenv install requests
3

$ pipenv install requests
11trả về một đối tượng giống như từ điển, cho phép bạn truy cập các giá trị tiêu đề bằng từ khóa. Ví dụ. để xem loại nội dung của tải phản hồi, bạn có thể truy cập 
$ pipenv install requests
13

>>>

$ pipenv install requests
4

Tuy nhiên, có điều gì đó đặc biệt về đối tượng tiêu đề giống như từ điển này. Thông số HTTP xác định các tiêu đề không phân biệt chữ hoa chữ thường, có nghĩa là chúng tôi có thể truy cập các tiêu đề này mà không cần phải lắng nghe về cách viết hoa của chúng tôi

>>>

$ pipenv install requests
5

Cho dù bạn sử dụng chìa khoá 

$ pipenv install requests
14hay 
$ pipenv install requests
15, bạn sẽ nhận được giá trị như nhau

Bây giờ, bạn đã học những điều cơ bản về

>>> response.status_code
200
6. Bạn đã thấy các thuộc tính và phương pháp hữu ích nhất của nó trong hoạt động. Vui lòng lùi lại một bước và xem phản hồi của bạn đã thay đổi như thế nào khi bạn tùy chỉnh các 
>>> response = requests.get['//api.github.com']
5yêu cầu của mình

Tham số chuỗi truy vấn

Một cách phổ biến để tùy chỉnh 

>>> response = requests.get['//api.github.com']
5yêu cầu là chuyển các giá trị thông qua các tham số chuỗi truy vấn trong URL. Để thực hiện điều này bằng cách sử dụng 
>>> response.status_code
200
5, bạn chuyển dữ liệu vào 
$ pipenv install requests
20. Ví dụ. bạn có thể sử dụng API Tìm kiếm của GitHub để tìm kiếm 
>>> requests.get['//api.github.com']

6thư viện

$ pipenv install requests
6

Bằng cách chuyển từ điển 

$ pipenv install requests
22đến 
$ pipenv install requests
20tham số của 
$ pipenv install requests
24, bạn có thể sửa đổi kết quả trả về từ API Tìm kiếm

Bạn có thể chuyển 

$ pipenv install requests
20đến 
>>> response.status_code
200
5dưới dạng từ điển, như bạn vừa làm, hoặc dưới dạng danh sách các bộ giá trị

>>>

$ pipenv install requests
7

Thậm chí bạn có thể chuyển các giá trị dưới dạng 

>>> response = requests.get['//api.github.com']
>>> response.content
b'{"current_user_url":"//api.github.com/user","current_user_authorizations_html_url":"//github.com/settings/connections/applications{/client_id}","authorizations_url":"//api.github.com/authorizations","code_search_url":"//api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"//api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"//api.github.com/user/emails","emojis_url":"//api.github.com/emojis","events_url":"//api.github.com/events","feeds_url":"//api.github.com/feeds","followers_url":"//api.github.com/user/followers","following_url":"//api.github.com/user/following{/target}","gists_url":"//api.github.com/gists{/gist_id}","hub_url":"//api.github.com/hub","issue_search_url":"//api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"//api.github.com/issues","keys_url":"//api.github.com/user/keys","notifications_url":"//api.github.com/notifications","organization_repositories_url":"//api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"//api.github.com/orgs/{org}","public_gists_url":"//api.github.com/gists/public","rate_limit_url":"//api.github.com/rate_limit","repository_url":"//api.github.com/repos/{owner}/{repo}","repository_search_url":"//api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"//api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"//api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"//api.github.com/gists/starred","team_url":"//api.github.com/teams","user_url":"//api.github.com/users/{user}","user_organizations_url":"//api.github.com/user/orgs","user_repositories_url":"//api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"//api.github.com/search/users?q={query}{&page,per_page,sort,order}"}'
5

>>>

$ pipenv install requests
8

Chuỗi truy vấn rất hữu ích cho các 

>>> response = requests.get['//api.github.com']
5yêu cầu tham số hóa. Bạn cũng có thể tùy chỉnh các yêu cầu của mình bằng cách bổ sung hoặc sửa đổi các tiêu đề bạn gửi

Yêu cầu tiêu đề

Để tùy chỉnh tiêu đề, bạn chuyển từ điển tiêu đề HTTP thành 

>>> response.status_code
200
5 sử dụng 
$ pipenv install requests
30tham số. Ví dụ. bạn có thể thay đổi yêu cầu tìm kiếm trước đó của mình để làm nổi bật các cụm từ tìm kiếm phù hợp trong kết quả bằng cách chỉ định 
$ pipenv install requests
31loại phương tiện tiện ích trong 
$ pipenv install requests
32tiêu đề

$ pipenv install requests
9

Các 

$ pipenv install requests
32tiêu đề nói với máy chủ những loại nội dung ứng dụng của bạn có thể xử lý. Trong trường hợp này, vì bạn đang mong đợi các cụm từ tìm kiếm phù hợp được đánh dấu, bạn đang sử dụng giá trị tiêu đề 
$ pipenv install requests
34, là 
$ pipenv install requests
32tiêu đề GitHub độc quyền trong nội dung đó có định dạng JSON đặc biệt

Trước khi bạn tìm hiểu thêm các cách tùy chỉnh yêu cầu, hãy mở rộng tầm nhìn bằng cách khám phá các phương thức HTTP khác

HTTP method other

Bên Cạnh 

>>> response = requests.get['//api.github.com']
5, phương thức HTTP phổ biến khác bao gồm 
>>> response = requests.get['//api.github.com']
7, 
$ pipenv install requests
38, 
$ pipenv install requests
39, 
$ pipenv install requests
40, _______7_______41, và 
$ pipenv install requests
42.
>>> requests.get['//api.github.com']

6cung cấp một phương thức, với một ký tự tương tự 
>>> response.status_code
200
5, cho mỗi phương thức HTTP sau

>>>

import requests
0

Mỗi lệnh gọi hàm thực hiện một yêu cầu tới 

$ pipenv install requests
45 dịch vụ bằng cách sử dụng phương thức HTTP tương ứng. Đối với mỗi phương pháp, bạn có thể kiểm tra phản hồi của chúng giống như cách bạn đã làm trước đây

>>>

import requests
1

Tiêu đề, nội dung phản hồi, mã trạng thái và hơn thế nữa được trả về ____20_______6cho mỗi phương thức. Tiếp theo bạn sẽ có cái nhìn sâu sắc hơn về các 

>>> response = requests.get['//api.github.com']
7, 
$ pipenv install requests
38và 
$ pipenv install requests
41các phương pháp và tìm hiểu cách chúng khác với các loại yêu cầu khác

Nội dung thư

Theo mô tả cụ thể HTTP, 

>>> response = requests.get['//api.github.com']
7, 
$ pipenv install requests
38, và ít phổ biến 
$ pipenv install requests
41yêu cầu truyền dữ liệu của mình thông qua nội dung thư chứ không phải thông qua các thông số trong chuỗi truy vấn. Khi sử dụng 
>>> requests.get['//api.github.com']

6, bạn sẽ chuyển tải quan trọng cho 
$ pipenv install requests
54tham số của hàm tương ứng

$ pipenv install requests
54 lấy từ điển, liệt kê các bộ giá trị, byte hoặc một đối tượng giống tệp. Bạn sẽ muốn điều chỉnh dữ liệu bạn gửi trong nội dung yêu cầu của mình để phù hợp với nhu cầu cụ thể của dịch vụ mà bạn đang tương tác

Ví dụ. nếu loại nội dung yêu cầu của bạn là 

$ pipenv install requests
56, bạn có thể gửi dữ liệu theo biểu mẫu dưới dạng từ điển

>>>

import requests
2

Bạn cũng có thể gửi cùng một dữ liệu dưới dạng danh sách các bộ giá trị

>>>

import requests
3

Tuy nhiên, nếu bạn cần gửi dữ liệu JSON, bạn có thể sử dụng 

$ pipenv install requests
57tham số. Khi bạn chuyển dữ liệu JSON qua 
$ pipenv install requests
57, 
>>> requests.get['//api.github.com']

6 sẽ tuần tự hóa dữ liệu của bạn và thêm 
$ pipenv install requests
13tiêu đề chính xác cho bạn

httpbin. org là một tài nguyên tuyệt vời được tạo ra bởi tác giả của 

>>> requests.get['//api.github.com']

6, Kenneth Reitz. Đó là một nhiệm vụ chấp nhận các yêu cầu kiểm tra và phản hồi dữ liệu về các yêu cầu. Ví dụ. bạn có thể sử dụng nó để kiểm tra một 
>>> response = requests.get['//api.github.com']
7yêu cầu cơ bản

>>>

import requests
4

Bạn có thể thấy từ phản hồi rằng máy chủ đã nhận được dữ liệu và tiêu đề yêu cầu của bạn khi bạn gửi chúng.

>>> requests.get['//api.github.com']

6 cũng cung cấp thông tin này cho bạn dưới dạng một 
$ pipenv install requests
64

Check your request

Khi bạn thực hiện một yêu cầu, 

>>> requests.get['//api.github.com']

6thư viện sẽ chuẩn bị yêu cầu trước khi thực hiện việc gửi nó đến máy chủ đích. Chuẩn bị yêu cầu bao gồm các thứ như xác thực tiêu đề và tuần tự hóa nội dung JSON

Bạn có thể xem 

$ pipenv install requests
64 bằng cách truy cập 
$ pipenv install requests
67

>>>

import requests
5

Kiểm tra 

$ pipenv install requests
64cung cấp cho bạn quyền truy cập vào tất cả các loại thông tin về yêu cầu đang được thực hiện như trọng tải, URL, tiêu đề, xác thực và hơn thế nữa

Cho đến nay, bạn đã thực hiện rất nhiều loại yêu cầu khác nhau, nhưng chúng đều có một điểm chung. chúng là những yêu cầu chưa được xác thực đối với các API công khai. Nhiều dịch vụ bạn có thể gặp sẽ muốn bạn xác nhận theo cách nào đó

Xác thực

Xác thực sự trợ giúp của dịch vụ hiểu bạn là ai. Thông thường, bạn cung cấp thông tin xác thực của mình cho máy chủ bằng cách chuyển dữ liệu qua 

$ pipenv install requests
69tiêu đề hoặc tiêu đề tùy chỉnh để xác định dịch vụ. Tất cả các hàm yêu cầu mà bạn đã thấy cho đến thời điểm này đều cung cấp một tham số được gọi là ______7_______70, cho phép bạn chuyển thông tin đăng nhập của mình

Một ví dụ về API yêu cầu xác thực là API người  của GitHub. Điểm cuối này cung cấp thông tin về hồ sơ của người dùng đã được xác thực. Để thực hiện yêu cầu đối với người dùng API đã được xác thực, bạn có thể chuyển đổi tên người dùng và mật khẩu GitHub của mình trong một bộ mã tới 

>>> response.status_code
200
5

>>>

import requests
6

Yêu cầu đã thành công nếu thông tin xác thực bạn đã chuyển trong tuple đến ______7_______70là hợp lệ. Nếu bạn cố gắng thực hiện yêu cầu này mà không có thông tin đăng nhập, bạn sẽ thấy rằng mã trạng thái là 

$ pipenv install requests
73

>>>

import requests
7

Khi bạn chuyển tên người dùng và mật khẩu của mình trong một bộ vào 

$ pipenv install requests
70tham số, bạn 
>>> requests.get['//api.github.com']

6đang áp dụng thông tin đăng nhập thông tin bằng cách sử dụng lược đồ xác thực quyền truy cập Cơ sở HTTP

Do đó, bạn có thể đưa ra yêu cầu tương tự bằng cách chuyển thông tin xác thực Cơ sở rõ ràng bằng cách sử dụng 

$ pipenv install requests
76

>>>

import requests
8

Mặc dù bạn không cần phải xác minh rõ ràng đối với việc xác thực cơ bản, nhưng bạn có thể muốn xác thực bằng một phương pháp khác.

>>> requests.get['//api.github.com']

6cung cấp các phương pháp xác thực khác nhau như 
$ pipenv install requests
78và 
$ pipenv install requests
79

Thậm chí bạn có thể cung cấp cơ chế xác thực của riêng mình. Để làm như vậy, trước hết bạn phải tạo một lớp con của 

$ pipenv install requests
80. Sau đó, bạn triển khai 
$ pipenv install requests
81

import requests
9

Tại đây, 

$ pipenv install requests
82cơ chế tùy chỉnh của bạn nhận được mã thông báo, sau đó đưa mã thông báo đó vào 
$ pipenv install requests
83tiêu đề yêu cầu của bạn

Cơ chế xác thực kém có thể dẫn đến lỗ hổng bảo mật, vì vậy ngoại trừ khi một dịch vụ yêu cầu cơ chế xác thực điều chỉnh bởi vì lý do nào đó, bạn sẽ luôn muốn sử dụng lược đồ xác thực đã thử nghiệm và đúng như vậy

Trong khi bạn đang suy nghĩ về bảo mật, hãy xem xét xử lý Chứng chỉ SSL bằng cách sử dụng 

>>> requests.get['//api.github.com']

6

Xác minh chứng chỉ SSL

Bất cứ lúc nào dữ liệu bạn đang cố gắng gửi hoặc nhận là cảm, bảo mật là rất quan trọng. Cách bạn giao tiếp với các trang web an toàn thông qua HTTP là thiết lập kết nối được mã hóa bằng SSL, có nghĩa là việc xác minh Chứng chỉ SSL của máy chủ mục tiêu là rất quan trọng

Tin tốt là nó 

>>> requests.get['//api.github.com']

6làm điều này cho bạn theo mặc định. Tuy nhiên, có một số trường hợp bạn có thể muốn thay đổi hành vi này

Nếu bạn muốn tắt chứng minh Chứng chỉ SSL, bạn chuyển 

if response:
    print['Success!']
else:
    print['An error has occurred.']
7đến 
$ pipenv install requests
87tham số của hàm yêu cầu

>>>

>>> requests.get['//api.github.com']

0

>>> requests.get['//api.github.com']

6 thậm chí cảnh báo bạn khi bạn đưa ra một yêu cầu không an toàn để giúp bạn giữ an toàn cho dữ liệu của mình

Lưu ý. để cung cấp cho Tổ chức phát hành chứng chỉ. Điều này cho 

>>> requests.get['//api.github.com']

6 biết rằng nó có thể tin tưởng vào bất kỳ cơ quan nào. Do đó, bạn nên cập nhật 
$ pipenv install requests
90 thường xuyên để giữ cho các kết nối của mình an toàn nhất có thể

Hiệu lực

Khi sử dụng 

>>> requests.get['//api.github.com']

6, đặc biệt là trong môi trường sản xuất ứng dụng sản xuất, điều quan trọng là phải xem xét các tác động về hiệu quả. Các tính năng như kiểm tra thời gian chờ, phiên bản và giới hạn thử lại có thể giúp bạn giữ ứng dụng của mình hoạt động trơn tru

Hết giờ

Khi bạn thực hiện một yêu cầu tuyến nội tuyến đối với một dịch vụ bên ngoài, hệ thống của bạn sẽ cần phải chờ phản hồi trước khi tiếp tục. Nếu ứng dụng của bạn chờ phản hồi quá lâu, các yêu cầu đối với dịch vụ của bạn có thể sao lưu, trải nghiệm người dùng của bạn có thể bị ảnh hưởng hoặc các công việc nền của bạn có thể bị treo

Theo mặc định, 

>>> requests.get['//api.github.com']

6 sẽ đợi phản hồi vô thời hạn, vì vậy bạn hầu như luôn phải chỉ định khoảng thời gian chờ để ngăn chặn những điều này xảy ra. Để đặt thời gian chờ của yêu cầu, hãy sử dụng 
$ pipenv install requests
95tham số.
$ pipenv install requests
95có thể là số nguyên hoặc số thực hiện số giây chờ phản hồi trước khi hết thời gian

>>>

>>> requests.get['//api.github.com']

1

Trong yêu cầu đầu tiên, yêu cầu sẽ hết thời gian chờ sau 1 giây. Trong yêu cầu thứ hai, yêu cầu sẽ hết thời gian chờ sau 3,05 giây

to 

$ pipenv install requests
95với phần tử đầu tiên là thời gian chờ kết nối [thời gian nó cho phép máy khách thiết lập kết nối với máy chủ] và phần tử thứ hai là thời gian chờ đọc [thời gian nó sẽ chờ phản hồi khi khách hàng của bạn

>>>

>>> requests.get['//api.github.com']

2

Nếu yêu cầu thiết lập kết nối trong vòng 2 giây và nhận dữ liệu trong vòng 5 giây kể từ khi kết nối được thiết lập, thì phản hồi sẽ được trả về như trước đó. Nếu hết thời gian yêu cầu, thì hàm sẽ đưa ra một _______7_______98 NGOẠI LỆ

>>> requests.get['//api.github.com']

3

Chương trình của bạn có thể bắt gặp 

$ pipenv install requests
98 lỗi và phản hồi tương ứng

Phiên bản đối tượng

Cho đến bây giờ, bạn đã xử lý 

>>> requests.get['//api.github.com']

6các API cấp cao như 
>>> response.status_code
200
5và 
import requests
02. Các chức năng này là những phần tóm tắt của những gì đang diễn ra khi bạn thực hiện các yêu cầu của mình. Chúng ẩn các chi tiết khai triển giả định như cách các kết nối được quản lý để bạn không phải lo lắng về chúng

Bên dưới những phần phụ đó là một lớp được gọi là 

import requests
03. Nếu bạn cần điều chỉnh quyền kiểm soát của mình đối với cách các yêu cầu đang được thực hiện hoặc cải thiện hiệu suất của các yêu cầu, thì bạn có thể cần sử dụng 
import requests
03trực tiếp một phiên bản

Phiên bản được sử dụng để duy trì các thông số trên các yêu cầu. Ví dụ. nếu bạn muốn sử dụng cùng một xác thực cho nhiều yêu cầu, bạn có thể sử dụng một phiên bản

>>> requests.get['//api.github.com']

4

Mỗi khi bạn thực hiện một yêu cầu 

import requests
05, khi nó được khởi tạo bằng thông tin xác thực, thông tin xác thực đó sẽ được duy trì

Tối ưu hóa hiệu suất chính của các phiên bản ở dạng kết nối liên tục. Khi ứng dụng của bạn tạo kết nối với máy chủ bằng cách sử dụng một 

import requests
03, ứng dụng sẽ giữ kết nối đó trong một nhóm kết nối. Khi ứng dụng của bạn muốn kết nối lại với cùng một máy chủ, ứng dụng sẽ sử dụng kết nối lại từ nhóm thay vì thiết lập một kết nối mới

Số lần thử tối đa

Khi một yêu cầu không thành công, bạn có thể muốn ứng dụng của mình thử lại cùng một yêu cầu. Tuy nhiên, 

>>> requests.get['//api.github.com']

6 sẽ không làm điều này cho bạn theo mặc định. Để áp dụng chức năng này, bạn cần triển khai  tùy chỉnh

Bộ điều hợp Giao thông cho phép bạn xác định một tập hợp các cấu hình cho mỗi dịch vụ mà bạn đang tương tác. Ví dụ. giả sử bạn muốn tất cả các yêu cầu 

import requests
08thử lại ba lần trước khi cuối cùng tăng một 
import requests
09. Bạn sẽ xây dựng Bộ điều hợp truyền tải, đặt 
import requests
10thông số của nó và gắn nó vào một bộ điều hợp hiện có 
import requests
03

>>> requests.get['//api.github.com']

5

Khi bạn gắn kết 

import requests
12, 
import requests
13 để 
import requests
05, 
import requests
05 sẽ điều chỉnh cấu hình của nó cho từng yêu cầu để https. //api. github. com

Trong thời gian chờ đợi, bộ điều khiển truyền tải và phiên bản là để giữ cho mã hiệu quả của bạn và ứng dụng của bạn có khả năng phục hồi

Phần kết luận

Bạn đã trải qua một cơn say đường dài trong quá trình tìm hiểu về 

>>> requests.get['//api.github.com']

6thư viện mạnh bạo của Python

Bây giờ bạn có thể

  • Yêu cầu Sử dụng một loạt các phương pháp HTTP khác nhau như 
    >>> response = requests.get['//api.github.com']
    
    5, 
    >>> response = requests.get['//api.github.com']
    
    7, và
    $ pipenv install requests
    
    38
  • Tùy chỉnh yêu cầu của bạn bằng cách sửa đổi tiêu đề, xác thực, chuỗi truy vấn và nội dung thư
  • Kiểm tra dữ liệu bạn gửi đến máy chủ và dữ liệu máy chủ gửi lại cho bạn
  • Làm việc với chứng chỉ SSL chứng minh
  • Sử dụng 
    >>> requests.get['//api.github.com']
    
    
    6hiệu quả sử dụng 
    import requests
    
    10, 
    $ pipenv install requests
    
    95, phiên bản và Giao thông vận tải Bộ điều hợp

Bởi vì bạn đã học cách sử dụng 

>>> requests.get['//api.github.com']

6, bạn được trang bị để khám phá thế giới mở rộng của các dịch vụ web và xây dựng các ứng dụng tuyệt vời bằng cách sử dụng dữ liệu hấp dẫn mà họ cung cấp

Chủ Đề