Computer >> Máy Tính >  >> Lập trình >> Python

Yêu cầu Python:Hướng dẫn

Khi bạn đang xây dựng một ứng dụng bằng Python, có thể có lúc bạn muốn kết nối với dịch vụ của bên thứ ba. Ví dụ:nếu bạn đang xây dựng một công cụ thể dục, bạn có thể muốn kết nối với API Fitbit để có thể xem dữ liệu tập thể dục của mình; một ứng dụng có thể gửi tin nhắn văn bản có thể kết nối với API Twilio.

Trong Python, thư viện yêu cầu cho phép bạn thực hiện các yêu cầu để bạn có thể kết nối các dịch vụ web của bên thứ ba với các ứng dụng của mình. Trong hướng dẫn này, chúng ta sẽ tìm hiểu về thư viện yêu cầu Python và cách bạn có thể sử dụng nó để gửi yêu cầu HTTP.

Yêu cầu trên web:Trình làm mới

Yêu cầu là trung tâm của Internet. Khi bạn nhấp vào bài viết này, một yêu cầu HTTP đã được gửi đến máy chủ Career Karma. Yêu cầu đó cho máy chủ của chúng tôi biết bạn muốn xem trang web nào để máy chủ của chúng tôi có thể tìm thấy trang đó. Khi trang web được tìm thấy, máy chủ web của chúng tôi đã trả lại trang đó cho trình duyệt của bạn. Quá trình này cho phép bạn xem hướng dẫn này.

Yêu cầu web có nhiều dạng khác nhau. Loại yêu cầu bạn thực hiện để xem trang web này được gọi là yêu cầu GET. Loại yêu cầu này cho phép bạn truy xuất dữ liệu. Có các loại yêu cầu khác như POST và PUT, được sử dụng để sửa đổi tài nguyên trên máy chủ. Vì mục đích của hướng dẫn này, chúng tôi sẽ tập trung vào các yêu cầu GET và POST.

Cách cài đặt yêu cầu

Yêu cầu là thư viện HTTP cho Python cho phép bạn thực hiện các yêu cầu web.

Trước khi có thể thực hiện các yêu cầu web bằng Python, chúng ta phải cài đặt thư viện mã yêu cầu Python. Chúng ta có thể làm như vậy bằng lệnh sau:

 yêu cầu cài đặt pip 

Bây giờ chúng tôi đã tải xuống gói Python, chúng tôi đã sẵn sàng để đưa ra yêu cầu web.

Cách thực hiện yêu cầu GET

Loại yêu cầu web phổ biến nhất mà bạn sẽ thực hiện là yêu cầu GET. Loại yêu cầu này cho phép bạn truy xuất dữ liệu từ máy chủ.

81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.

Sinh viên tốt nghiệp bootcamp trung bình đã dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.

Giả sử chúng tôi đang tạo một ứng dụng cho phép bạn truy xuất danh sách thông tin về mèo. Để làm như vậy, chúng tôi sẽ sử dụng một API có tên là cat-fact. API này mở công khai, vì vậy chúng tôi không cần bất kỳ thông tin đăng nhập nào để đăng nhập. Chúng tôi có thể sử dụng mã này để đưa ra yêu cầu đối với API:

 nhập yêu cầures =request.get ('https://cat-fact.herokuapp.com/facts') print (res.status_code) 

Mã này trả về:200. Hãy chia nhỏ mã của chúng ta.

Trên dòng đầu tiên, chúng tôi đã nhập thư viện yêu cầu. Điều này cho phép chúng tôi truy cập vào thư viện yêu cầu mà chúng tôi sẽ sử dụng trong hướng dẫn của mình. Sau đó, chúng tôi sử dụng requests.get() phương pháp để thực hiện một yêu cầu web. Chúng tôi có thể đã sử dụng các phương thức như .put() hoặc .post() để thực hiện các loại yêu cầu khác, nhưng trong trường hợp này, chúng tôi chỉ cần truy xuất dữ liệu từ API cat-fact.

Tiếp theo, chúng tôi in mã trạng thái từ yêu cầu web của chúng tôi. Số 200 đã được trả lại, cho chúng tôi biết yêu cầu web của chúng tôi đã được thực hiện thành công. Chúng ta sẽ thảo luận về ý nghĩa của những con số này ở phần sau của hướng dẫn.

Xem yêu cầu

Trong ví dụ của chúng tôi ở trên, chúng tôi đã in ra mã trạng thái của yêu cầu của chúng tôi. Nhưng làm thế nào chúng ta có thể xem dữ liệu mà chúng ta đã lấy được? Sự thật về con mèo ở đâu? Đó là nơi chứa .text và .json() các phương pháp đi kèm.

Xem phản hồi bằng văn bản

Chúng tôi có thể sử dụng phương thức .text để xem kết quả của yêu cầu web của chúng tôi:

 nhập requestres =request.get ('https://cat-fact.herokuapp.com/facts') print (res.text) 

Mã này trả về một danh sách các dữ kiện về mèo. Tuy nhiên, điều này không thực tế đối với chúng tôi vì dữ liệu chúng tôi đang truy vấn là một API. Mặc dù bây giờ chúng ta có một danh sách Python về các dữ kiện về mèo, nhưng chúng tôi rất khó đọc chúng vì chúng ở dạng văn bản thuần túy.

Xem phản hồi JSON

Một định dạng hữu ích hơn mà thông tin về mèo của chúng ta có thể được lưu trữ là JSON. Chúng tôi có thể truy xuất dữ liệu JSON từ yêu cầu của mình bằng mã này:

 print (res.json ()) 

Mã của chúng tôi trả về một danh sách dài các dữ kiện về mèo. Đây là bản ghi đầu tiên trong danh sách:

 {'_id':'58e009550aac31001185ed12', 'text':'Video về mèo cổ nhất trên YouTube có từ năm 1894.', 'type':'cat', 'user':{'_id':'58e007480aac31001185ecef' , 'name':{'first':'Kasimir', 'last':'Schulz'}}, 'upvotes':6, 'userUpvoted':None} 

Thành công! Chúng tôi đã quản lý để truy xuất danh sách thông tin về mèo của mình.

Cách thực hiện yêu cầu ĐĂNG

Bạn cũng có thể sử dụng thư viện yêu cầu để thực hiện yêu cầu ĐĂNG. Điều này sẽ cho phép bạn sửa đổi dữ liệu được lưu trữ trên máy chủ web.

Đối với ví dụ này, chúng tôi sẽ sử dụng API Airtable. Điều này là do chúng tôi cần sử dụng một API hỗ trợ các yêu cầu POST và API cat-fact chỉ được đọc.

Giả sử chúng ta có một cơ sở dữ liệu nơi chúng ta ghi lại tất cả các tách trà mà chúng ta uống. Chúng tôi vừa uống một tách trà khác và chúng tôi muốn thêm nó vào cơ sở dữ liệu. Chúng tôi có thể làm như vậy bằng cách sử dụng mã này:

 import requestheaders ={'Authorization':'Bearer API_KEY', 'Content-Type':'application / json',} data ='{"records":[{"fields":{"Drink":"Black Decaf Tea "}}]} 'res =request.post (' https://cat-fact.herokuapp.com/facts ', headers =headers, data =data) print (res.json ()) 

Mã của chúng tôi đã trả lại:

 {'records':[{'id':'recqUEPuXEAXaNl1L', 'fields':{'Drink':'Black Decaf Tea', 'Date':'2020-06-16T08:53:02.000Z'} , 'createdTime':'2020-06-16T08:53:02.000Z'}]} 

Điều này cho chúng tôi biết yêu cầu HTTP của chúng tôi đã thành công. Chúng tôi vừa thêm một bản ghi vào cơ sở dữ liệu Airtable của mình bằng cách sử dụng API của họ. Hãy thảo luận thêm về những dòng mã này.

Đầu tiên, chúng tôi đã nhập thư viện yêu cầu để có thể thực hiện các yêu cầu HTTP trong mã của mình.

Sau đó, chúng tôi xác định một từ điển chứa hai khóa và giá trị:một khóa lưu trữ khóa xác thực của chúng tôi và một từ điển khác chỉ định loại nội dung mà chúng tôi đang gửi đến máy chủ web. Đây là những tiêu đề mà chúng tôi cần gửi để thực hiện yêu cầu tới API Airtable.

Tiếp theo, chúng tôi đã khai báo một biến được gọi là dữ liệu lưu trữ dữ liệu mà chúng tôi muốn gửi cùng với yêu cầu POST của chúng tôi. Trong trường hợp này, chúng tôi đã thêm một thức uống có tên “Trà Decaf đen” vào cơ sở dữ liệu của mình. Sau đó, chúng tôi sử dụng requests.post() và chỉ định tiêu đề và dữ liệu của chúng tôi dưới dạng tham số, cho phép chúng tôi thực hiện yêu cầu ĐĂNG tới API Airtable.

Cuối cùng, chúng tôi in kết quả yêu cầu của mình ở định dạng JSON bằng cách sử dụng res.json() .

Mã trạng thái HTTP

Giao thức HTTP trả về một mã trạng thái duy nhất khi bạn thực hiện một yêu cầu web. Điều này cho phép bạn xem liệu yêu cầu web của bạn đã thành công hay chưa hoặc có bất kỳ lỗi nào xảy ra hay không. Bạn có thể đã thấy một vài trong số này, chẳng hạn như 404.

Dưới đây là danh sách tham khảo các mã trạng thái bạn có thể gặp phải khi thực hiện yêu cầu với các yêu cầu Python:

  • 1XX:Thông tin
  • 2XX:Yêu cầu đã được thực hiện thành công
  • 3XX:Yêu cầu đã được chuyển hướng
  • 4XX:Lỗi phía máy khách
  • 5XX:Lỗi phía máy chủ

Biết các mã trạng thái này cho phép chúng tôi thêm gỡ lỗi vào chương trình của mình. Hãy lấy yêu cầu GET từ ví dụ về API cat-fact trước đó. Giả sử chúng ta muốn in ra một thông báo nếu không tìm thấy tài nguyên mà chúng ta đang truy cập. Chúng tôi có thể làm như vậy bằng cách sử dụng mã này:

 nhập yêu cầures =request.get ('https://cat-fact.herokuapp.com/facts') if res.status_code ==200:print ("Thành công") else:print ("Lỗi")  

Mã của chúng tôi đã trả về:Thành công. Vì mã trạng thái của yêu cầu của chúng tôi là 200 nên thông báo “Thành công” sẽ được in ra bảng điều khiển. Tuy nhiên, nếu yêu cầu của chúng tôi không thành công - ví dụ:chúng tôi có thể đã chỉ định một URL không hợp lệ - thì thông báo “Lỗi” sẽ được in ra bảng điều khiển.

Kết luận

Thư viện yêu cầu Python cho phép bạn thực hiện các yêu cầu HTTP bằng Python. Trong hướng dẫn này, chúng tôi đã thảo luận về cách thư viện yêu cầu Python được sử dụng để thực hiện các yêu cầu GET và POST, nhưng bạn cũng có thể thực hiện các yêu cầu PUT và DELETE bằng cách sử dụng thư viện.

Khi bạn sử dụng một phương thức như requests.get() hoặc requests.post() , Python sẽ đưa ra yêu cầu đối với tài nguyên web mà bạn muốn truy cập. Bạn có thể đính kèm tiêu đề và dữ liệu với yêu cầu của mình, điều này cho phép bạn gửi thông tin nếu bạn muốn thực hiện thay đổi đối với tài nguyên web mà bạn sở hữu.

Bây giờ, bạn đã sẵn sàng để bắt đầu sử dụng thư viện yêu cầu Python như một chuyên gia!