Hướng dẫn what is http request in python? - yêu cầu http trong python là gì?

Khi nói đến phát triển phần mềm, hầu như luôn có một số cách khác nhau để đạt được kết quả tương tự. Điều này cũng đúng khi đánh giá một gia đình của các gói phần mềm bên thứ ba. Ví dụ, trong hệ sinh thái Python có hàng ngàn gói liên quan đến việc thực hiện các yêu cầu HTTP. Bạn nên sử dụng cái nào?

Trong hướng dẫn dựa trên thử nghiệm này, chúng tôi sẽ đi qua các đoạn mã ngắn gọn cho thấy cách thực hiện một yêu cầu nhận đơn giản bằng cách sử dụng 5 gói liên quan đến yêu cầu phổ biến nhất của Python. Chúng tôi sẽ sử dụng ảnh thiên văn học của NASA, API (được rút ngắn thành APOD trong suốt phần còn lại của hướng dẫn) và mở ảnh hôm nay trong trình duyệt web của chúng tôi.APOD throughout the rest of the tutorial) and open today’s photo in our web browser.

Mục tiêu của chúng tôi là thực hiện các yêu cầu nhận đơn giản nhanh chóng bằng cách sử dụng nhiều gói Python, thay vì so sánh và đối chiếu tất cả các tính năng và sự tinh tế của mỗi gói. Nếu các yêu cầu không đồng bộ là phù hợp hơn với trường hợp sử dụng của bạn, hãy xem bài đăng trên blog đồng hành có tên là các yêu cầu HTTP không đồng bộ trong Python với Aiohttp và Asyncio.

Điều kiện tiên quyết

  • Python 3.6+
  • $ python3 -m venv env 
    $ source env/bin/activate
    
    8, Trình cài đặt gói Python

Xác định vị trí khóa API Demo Demo của NASA

Điều hướng đến https://api.nasa.gov/. Bạn sẽ thấy trong phần Xác thực rằng bạn không cần khóa API duy nhất để khám phá bộ dữ liệu NASA. Nếu bạn muốn tạo một cái nào đó, hãy làm theo hướng dẫn trên trang web và sử dụng khóa API mà bạn đã đưa ra thay vì demo_key mà chúng tôi sẽ sử dụng.Authentication section that you do not need a unique API key to explore the NASA dataset. If you wish to create one anyway, follow the instructions on the webpage and use the API key you’re given instead of the DEMO_KEY we’ll be using.

Giới hạn tốc độ cho khóa API demo là 30 yêu cầu mỗi giờ và 50 yêu cầu mỗi ngày, như được giải thích trong phần giới hạn tỷ lệ demo_key của cùng một trang web. Bạn sẽ có thể ở trong các giới hạn này trong khi theo dõi cùng với thử nghiệm yêu cầu HTTP của chúng tôi. Phần này của trang web NASA cũng nói rằng chuỗi Demo_key, có thể được sử dụng thay cho một giá trị khóa API thực sự, do đó, những gì chúng tôi sẽ sử dụng trong hướng dẫn này.DEMO_KEY Rate Limits section of the same webpage. You should be able to stay well within these limits while following along with our HTTP requests experiment. This section of the NASA webpage also states that the string “DEMO_KEY” can be used in place of a real API key value, so that’s what we’ll use in this tutorial.

Xác định vị trí điểm cuối URL cho API APOD

URL chúng tôi sẽ gửi các yêu cầu HTTP của chúng tôi đến là https://api.nasa.gov/planetary/apod, mà bạn có thể tìm thấy bằng cách cuộn xuống phần API duyệt của https://api.nasa.gov/ Trang web và mở menu thả xuống APOD:Browse APIs section of the https://api.nasa.gov/ webpage and opening the APOD dropdown menu:

Hướng dẫn what is http request in python? - yêu cầu http trong python là gì?

Nếu bạn đọc thông tin ngắn gọn được hiển thị trong Dropdown Apod, bạn sẽ thấy rằng điểm cuối này chỉ chấp nhận phương thức GET. Điều này rất quan trọng bởi vì chúng tôi sẽ chỉ cần thực hiện cụ thể yêu cầu nhận đến điểm cuối cho mỗi trong số 5 yêu cầu HTTP khác nhau mà chúng tôi sẽ gửi.GET method. This is important because we’ll need to specifically make only a GET request to the endpoint for each of the 5 different HTTP requests we’ll send.

Tạo môi trường ảo Python

Tạo một thư mục mới cho dự án này có tên Python-HTTP/ ở một vị trí phù hợp trên máy tính của bạn, sau đó điều hướng đến thư mục mới này. Trong ví dụ này, chúng tôi sẽ sử dụng máy tính để bàn của MacBook và tạo tệp từ dòng lệnh.

$ cd ~/Desktop
$ mkdir python-http
$ cd python-http

Tạo một môi trường ảo mới cho dự án này để các phụ thuộc chúng ta cần cài đặt don don can thiệp vào thiết lập toàn cầu trên máy tính của bạn. Để tạo một môi trường mới có tên là Env Env, hãy chạy các lệnh sau trên dòng lệnh:

$ python3 -m venv env 
$ source env/bin/activate

Sau khi bạn tìm nguồn môi trường ảo, bạn sẽ thấy dòng đầu vào của Prompt Prompt bắt đầu bằng tên của môi trường ("Env"). Python đã tạo một thư mục mới có tên Env/ trong thư mục Python-HTTP/ mà bạn có thể thấy bằng cách chạy lệnh LS trong dấu nhắc lệnh của bạn.

Tạo một tệp được gọi là .gitignore trong thư mục Python-HTTP/. Nếu bạn đang sử dụng dòng lệnh trên máy Mac để tạo tệp, đây sẽ là lệnh:

Mở tệp .gitignore trong trình soạn thảo văn bản bạn chọn, sau đó thêm env/ thư mục vào nội dung của tệp .gitignore. Trong khi chúng tôi ở đây, chúng tôi cũng sẽ thêm một dòng cho tệp .ENV mà chúng tôi sẽ tạo trong phần tiếp theo.

Lưu ý rằng env/ thư mục được tạo bởi Python cho môi trường ảo không giống với tệp .ENV mà LỚN tạo ra để lưu trữ các bí mật như khóa API và biến môi trường.

Lưu trữ các biến môi trường một cách an toàn

Khóa API là thông tin nhạy cảm và nên được bảo vệ. Do đó, nó đã xem xét một thông lệ tốt nhất để lưu các khóa API dưới dạng các biến môi trường thay vì mã hóa cứng chúng vào ứng dụng của bạn. Chúng tôi sẽ theo dõi thực tiễn tốt nhất này mặc dù giá trị chính của API Demo của NASA (Demo_key,) là kiến ​​thức công khai.

Để thực hiện việc này, chúng tôi có thể lưu trữ các khóa API trong tệp .ENV và liệt kê tệp .env trong tệp .gitignore của chúng tôi (mà chúng tôi đã thực hiện ở trên) vì vậy Git không theo dõi nó. Tệp .ENV được sử dụng bất cứ khi nào có các biến môi trường bạn cần cung cấp cho hệ điều hành của mình.

Đầu tiên, tạo tệp .ENV. Đây là lệnh để chạy trên dòng lệnh của Mac:

Tiếp theo, mở tệp .ENV trong trình soạn thảo văn bản yêu thích của bạn và thêm dòng sau:

export NASA_API_KEY=DEMO_KEY

Nguồn tệp .ENV để nó có sẵn cho hệ điều hành của bạn, sau đó in giá trị biến môi trường vào bảng điều khiển của bạn để xác nhận nó có nguồn gốc thành công:

(env) $ source .env
(env) $ echo $NASA_API_KEY

Cài đặt các phụ thuộc Python

Ngoài mô -đun

$ python3 -m venv env 
$ source env/bin/activate
9 được bao gồm trong Thư viện tiêu chuẩn Python, các gói Python của bên thứ 3 mà chúng tôi sẽ sử dụng cho thử nghiệm yêu cầu HTTP của chúng tôi là:

  • Yêu cầu - Dễ dàng là gói phổ biến nhất để thực hiện các yêu cầu bằng cách sử dụng Python
  • Urllib3 - Không bị nhầm lẫn với
    $ python3 -m venv env 
    $ source env/bin/activate
    
    9, là một phần của thư viện tiêu chuẩn Python
  • httplib2 - lấp đầy một số khoảng trống do các thư viện khác để lại
  • httpx - gói mới hơn cung cấp các yêu cầu HTTP/2 và không đồng bộ

Sự phụ thuộc cần thiết cho các dự án Python thường được liệt kê trong một tệp có tên là Yêu cầu.txt. Tạo tệp yêu cầu.txt trong thư mục Python-HTTP/ Project:

(env) $ touch requirements.txt

Sao chép và dán danh sách các gói Python này vào tệp yêu cầu của bạn.TXT bằng trình soạn thảo văn bản ưa thích của bạn:

requests
urllib3
httplib2
httpx

Cài đặt tất cả các phụ thuộc với lệnh được đưa ra dưới đây, đảm bảo bạn vẫn có môi trường ảo (env,) có nguồn gốc.

(env) $ pip install -r requirements.txt

Tạo các tệp Python

Nó thời gian để viết một số mã! Hãy bắt đầu bằng cách tạo một tệp Python cho mỗi mô -đun hoặc gói mà chúng tôi sẽ thử nghiệm:

(env) $ touch use_requests.py
(env) $ touch use_urllib3.py
(env) $ touch use_httplib2.py
(env) $ touch use_httpx.py
(env) $ touch use_urllib.py

Các ví dụ mã được cung cấp dưới đây cho mỗi trong số 5 tệp khác nhau mà chúng tôi đã tạo. Bạn cũng có thể xem toàn bộ dự án trong kho Github này.

Để làm cho các ví dụ mạnh mẽ và hữu ích hơn một chút, chúng tôi sẽ làm việc với hai mô-đun Python tích hợp có tên là JSON và Webbrowser để chúng tôi có thể mở bức tranh thiên văn trong ngày trong trình duyệt web.

Khám phá 5 cách phổ biến để thực hiện các yêu cầu HTTP với Python

1 trên 5: Yêu cầu

Gói yêu cầu cho Python phổ biến đến mức hiện tại nó là một yêu cầu trong hơn 1 triệu kho Github và đã có gần 600 người đóng góp cho cơ sở mã của nó trong nhiều năm! Gói tài liệu rõ ràng và súc tích gần như chắc chắn chịu trách nhiệm cho việc sử dụng rộng rãi của nó.

Sao chép và dán đoạn mã này vào tệp use_requests.py:

import json
import os
import webbrowser

import requests


nasa_api_key = os.environ.get('NASA_API_KEY')
api_url = 'https://api.nasa.gov/planetary/apod?api_key={}'.format(nasa_api_key)

def use_requests(api_url):

    response = requests.get(api_url)
    json_response = json.loads(response.text)
    photo_url = json_response['url']
    webbrowser.open_new_tab(photo_url)

    return

use_requests(api_url)

Trong mã ví dụ ở trên, trước tiên chúng tôi nhập tất cả các mô -đun và gói chúng tôi cần. Sau đó, chúng tôi truy xuất khóa API mà chúng tôi lưu trữ trong tệp .ENV (dòng 8) và chèn nó vào URL mà chúng tôi sẽ gửi yêu cầu GET đến (dòng 9). Dòng 13 là nơi chúng tôi sử dụng thư viện yêu cầu và bạn có thể thấy cú pháp đơn giản như thế nào. Sau khi cô lập URL ảnh trên mạng khỏi phản hồi API, chúng tôi mở nó trong trình duyệt web trên dòng 16.

Vì một cuộc gọi chức năng được bao gồm ở dưới cùng của tệp, bạn có thể chạy tệp này và ảnh sẽ tự động mở trong trình duyệt web của bạn! Chạy tệp trong dòng lệnh của bạn để tự mình thử:

(env) $ python3 use_requests.py

2 trên 5: Urllib3

Mặc dù có sự giống nhau trong tên, Urllib3 là gói của bên thứ 3 và hoàn toàn khác với Urllib, là một phần của thư viện tiêu chuẩn Python. Có hơn 650.000 kho github liệt kê Urllib3 là một yêu cầu làm cho nó trở thành một sự thay thế phổ biến lớn cho thư viện yêu cầu.

Sao chép và dán đoạn mã này vào tệp use_urllib3.py:

$ python3 -m venv env 
$ source env/bin/activate
0

Trong mã ví dụ ở trên, trước tiên chúng tôi nhập tất cả các mô -đun và gói chúng tôi cần. Sau đó, chúng tôi truy xuất khóa API mà chúng tôi lưu trữ trong tệp .ENV (dòng 8) và chèn nó vào URL mà chúng tôi sẽ gửi yêu cầu GET đến (dòng 9). Trên các dòng 13 và 14, chúng tôi sử dụng gói Urllib3, sau đó xử lý phản hồi để trích xuất URL ảnh và hiển thị nó trong trình duyệt web.

Vì một cuộc gọi chức năng được bao gồm ở dưới cùng của tệp, bạn có thể chạy tệp này và đảm bảo rằng nó hoạt động.

Mẹo: Nếu bạn gặp lỗi như

export NASA_API_KEY=DEMO_KEY
1 trong khi cố gắng chạy tệp, hãy làm theo các bước trong chuỗi StackOverflow này để giải quyết nó. If you get an error like
export NASA_API_KEY=DEMO_KEY
1 while trying to run the file, follow the steps in this StackOverflow thread to resolve it.

$ python3 -m venv env 
$ source env/bin/activate
1

3 trên 5: httplib2

Gói HTTPLIB2 là một yêu cầu của 86.000 kho github. Việc sử dụng httplib2 đứng sau các gói yêu cầu và urllib3, nhưng httplib2 lấp đầy một số khoảng trống được để lại bởi hai lựa chọn thay thế được sử dụng rộng rãi hơn. Ví dụ, httplib2 hỗ trợ các kết nối và bộ nhớ đệm liên tục.

Dưới đây, một ví dụ đơn giản về cách bạn có thể sử dụng httplib2 trong dự án của mình. Sao chép và dán mã sau vào uses_httplib2.py:

$ python3 -m venv env 
$ source env/bin/activate
2

Trong mã ví dụ ở trên, trước tiên chúng tôi nhập tất cả các mô -đun và gói chúng tôi cần. Sau đó, chúng tôi truy xuất khóa API mà chúng tôi lưu trữ trong tệp .ENV (dòng 8) và chèn nó vào URL mà chúng tôi sẽ gửi yêu cầu GET đến (dòng 9). Trên các dòng 13 và 16, chúng tôi sử dụng gói HTTPLIB2, sau đó xử lý phản hồi để trích xuất URL ảnh và hiển thị nó trong trình duyệt web.

Vì một cuộc gọi chức năng được bao gồm ở dưới cùng của tệp, bạn có thể chạy tệp này và đảm bảo rằng nó hoạt động:

$ python3 -m venv env 
$ source env/bin/activate
3

4 trên 5: httpx

Gói HTTPX Python là gói mới nhất trong danh sách của chúng tôi. Nó hỗ trợ giao thức HTTP/2 và các yêu cầu không đồng bộ ngoài giao thức HTTP/1 đồng bộ tiêu chuẩn. Nó được xây dựng để trở thành những người yêu cầu rất giống nhau và phản ánh rất nhiều mẫu mã có trong gói yêu cầu (mẫu đầu tiên chúng tôi đề cập).

Để thử HTTPX, hãy sao chép và dán mã sau vào tệp use_httpx.py:

$ python3 -m venv env 
$ source env/bin/activate
4

Trong mã ví dụ ở trên, trước tiên chúng tôi nhập tất cả các mô -đun và gói chúng tôi cần. Sau đó, chúng tôi truy xuất khóa API mà chúng tôi lưu trữ trong tệp .ENV (dòng 8) và chèn nó vào URL mà chúng tôi sẽ gửi yêu cầu GET đến (dòng 9). Dòng 13 là nơi chúng tôi sử dụng thư viện HTTPX và bạn có thể thấy cú pháp đơn giản như thế nào. Sau khi cô lập URL ảnh trên mạng khỏi phản hồi API, chúng tôi mở nó trong trình duyệt web trên dòng 16.

Vì một cuộc gọi chức năng được bao gồm ở dưới cùng của tệp, bạn có thể chạy tệp này và ảnh sẽ tự động mở trong trình duyệt web của bạn! Chạy tệp trong CLI của bạn để tự mình thử:

$ python3 -m venv env 
$ source env/bin/activate
5

5/5: Urllib

So với mức độ dễ dàng thực hiện các yêu cầu HTTP với gói yêu cầu trong phần trên, sử dụng mô-đun Urllib tích hợp Python, phức tạp hơn một chút. Nó đòi hỏi việc sử dụng Trình quản lý bối cảnh cũng như giải mã phản hồi - hai điều thường được trừu tượng hóa khỏi nhà phát triển khi sử dụng một trong các gói trong hướng dẫn của chúng tôi.

Sao chép và dán mã ví dụ này vào tệp use_urllib.py:

$ python3 -m venv env 
$ source env/bin/activate
6

Trong mã ví dụ ở trên, trước tiên chúng tôi nhập tất cả các mô -đun và gói chúng tôi cần. Sau đó, chúng tôi truy xuất khóa API mà chúng tôi lưu trữ trong tệp .ENV (dòng 7) và chèn nó vào URL mà chúng tôi sẽ gửi yêu cầu GET đến (dòng 8). Trên dòng 12, chúng tôi tạo đối tượng yêu cầu bằng mô -đun Urllib và trên dòng 13, chúng tôi sử dụng Trình quản lý ngữ cảnh (

export NASA_API_KEY=DEMO_KEY
2) để gửi yêu cầu đến điểm cuối APOD và lưu phản hồi. Trên dòng 14, chúng tôi giải mã phản hồi và chuyển đổi nó thành JSON, sau đó trích xuất URL ảnh và mở nó trong trình duyệt trên các dòng 15 và 16.

Vì một cuộc gọi chức năng được bao gồm ở dưới cùng của tệp, bạn có thể chạy tệp này và đảm bảo rằng nó hoạt động:

$ python3 -m venv env 
$ source env/bin/activate
7

Congratulations!

Công việc tốt đẹp làm việc thông qua hướng dẫn này! Bạn vừa học được cách:

  • Lưu trữ các khóa API và các bí mật khác một cách an toàn trong tệp .ENV
  • Thực hiện yêu cầu nhận được điểm cuối API theo 5 cách khác nhau
  • Mở hình ảnh từ tập lệnh Python của bạn trong trình duyệt web của bạn

Bước tiếp theo

Để mở rộng thử nghiệm của chúng tôi về việc thực hiện các yêu cầu HTTP 5 cách khác nhau bằng Python, bạn có thể:

  • Hãy thử một số gói liên quan đến HTTP và liên quan đến HTTP khác được liệt kê trong PYPI.
  • Thực hiện một số nghiên cứu của riêng bạn để so sánh những ưu và nhược điểm của từng gói được sử dụng trong hướng dẫn này.
  • Chọn một trong các gói chúng tôi đề cập trong hướng dẫn này và sử dụng tài liệu của nó để thực hiện các loại yêu cầu HTTP tinh vi hơn, giống như một loại sử dụng bộ đệm.
  • Hãy thử thực hiện các yêu cầu đăng, đặt hoặc xóa các yêu cầu với API hỗ trợ các phương thức này.

Hoặc, xem một số hướng dẫn khác trên blog Twilio để biết ý tưởng về những gì cần xây dựng tiếp theo:

  • Yêu cầu HTTP không đồng bộ trong Python với Aiohttp và Asyncio
  • 5 cách để thực hiện các yêu cầu HTTP trong Node.js
  • Tiếp xúc một máy chủ Django cục bộ vào Internet bằng cách sử dụng Ngrok

Tôi có thể chờ đợi để xem những gì bạn xây dựng!

August là một kỹ sư phần mềm về nội dung kỹ thuật trong nhóm Voices của nhà phát triển Twilio, chuyên về Python. Cô ấy yêu mâm xôi pi, bánh thật và đi trong rừng.


Bài viết liên quan

Yêu cầu HTTP có nghĩa là gì?

Yêu cầu HTTP được thực hiện bởi một máy khách, đến một máy chủ được đặt tên, nằm trên máy chủ. Mục đích của yêu cầu là truy cập một tài nguyên trên máy chủ. Để thực hiện yêu cầu, máy khách sử dụng các thành phần của URL (Trình định vị tài nguyên thống nhất), bao gồm thông tin cần thiết để truy cập tài nguyên.made by a client, to a named host, which is located on a server. The aim of the request is to access a resource on the server. To make the request, the client uses components of a URL (Uniform Resource Locator), which includes the information needed to access the resource.

Yêu cầu và phản hồi của HTTP trong Python là gì?

Mô -đun yêu cầu trong Python được sử dụng để thực hiện các yêu cầu HTTP cho các trang web.Một máy chủ web thường gửi lại phản hồi HTTP khi nhận được yêu cầu.Phản hồi HTTP bao gồm mã trạng thái, nội dung và mã hóa.. A web server usually sends an HTTP response back when it receives a request. The HTTP response comprises of status code, content, and encodings.

Phương pháp HTTP trong Python là gì?

Mô-đun Python Yêu cầu có một số phương thức tích hợp để thực hiện các yêu cầu HTTP để sử dụng URI được chỉ định bằng cách sử dụng các yêu cầu GET, POST, PUT, EPTE hoặc Head.Yêu cầu HTTP có nghĩa là lấy dữ liệu từ URI được chỉ định hoặc để đẩy dữ liệu đến máy chủ.Nó hoạt động như một giao thức phản hồi yêu cầu giữa máy khách và máy chủ.GET, POST, PUT, PATCH or HEAD requests. A Http request is meant to either retrieve data from a specified URI or to push data to a server. It works as a request-response protocol between a client and server.

Yêu cầu nhận được trong Python là gì?

Mô-đun yêu cầu của Python cung cấp phương thức được xây dựng được gọi là get () để thực hiện yêu cầu nhận được một URL được chỉ định.Ví dụ - Hãy thử thực hiện yêu cầu đối với API của GitHub chẳng hạn như mục đích.making a GET request to a specified URL. Example – Let's try making a request to Github's APIs for example purposes.