Chúng ta có thể gọi API REST từ Python không?
API REST cung cấp giao diện qua đó ứng dụng có thể sử dụng các dịch vụ được xác định bất kể ngôn ngữ lập trình được sử dụng. Vì vậy, cách chính để tương tác với các dịch vụ là thông qua các phương thức HTTP như GET, POST và PUT Show
Mười Mã trạng thái này chỉ là một phần nhỏ trong tổng số Mã trạng thái HTTP có thể truy cập. Việc đánh số Mã trạng thái dựa trên danh mục kết quả Khi làm việc với API REST của Python hoặc bất kỳ API nào, Mã trạng thái HTTP rất hữu ích vì bạn thường sẽ cần áp dụng nhiều logic khác nhau tùy thuộc vào kết quả của yêu cầu Kiến trúc RESTVới Kiến trúc REST mang đến sự linh hoạt mà các chuyên gia thực hiện phân trang. REST có một tập hợp các ràng buộc chính (hoặc chung) được xác định đóng vai trò quan trọng khi phát triển API RESTful. Chúng ta hãy nhìn vào chúng
Trăn là gì?Python là ngôn ngữ lập trình đa năng, cấp cao được diễn giải. Việc sử dụng thụt đầu dòng đáng kể trong triết lý thiết kế của nó nhấn mạnh khả năng đọc mã. Các yếu tố ngôn ngữ và cách tiếp cận hướng đối tượng của nó nhằm mục đích hỗ trợ các lập trình viên viết mã hợp lý, rõ ràng cho cả các dự án quy mô lớn và nhỏ Python được thu gom rác và gõ động. Nó hỗ trợ nhiều mô hình lập trình, bao gồm lập trình có cấu trúc (đặc biệt là thủ tục), lập trình hướng đối tượng và lập trình chức năng. Do thư viện tiêu chuẩn phong phú của nó, nó thường được gọi là ngôn ngữ “bao gồm pin” Để biết thêm thông tin về Python, hãy xem trang web chính thức tại đây Đơn giản hóa ETL với Đường ống dữ liệu không mã của HevoNền tảng Đường ống dữ liệu không có mã được quản lý hoàn toàn như Hevo Data giúp bạn tích hợp và tải dữ liệu từ hơn 100 nguồn khác nhau (hơn 40 nguồn dữ liệu miễn phí) đến Kho dữ liệu hoặc Điểm đến mà bạn chọn trong thời gian thực một cách dễ dàng. Hevo với đường cong học tập tối thiểu có thể được thiết lập chỉ trong vài phút cho phép người dùng tải dữ liệu mà không phải ảnh hưởng đến hiệu suất Bắt đầu với Hevo miễn phíNó giúp truyền dữ liệu từ nguồn bạn chọn đến đích bạn chọn. Sự tích hợp mạnh mẽ của nó với vô số nguồn cho phép người dùng đưa vào các loại dữ liệu khác nhau một cách trơn tru mà không cần phải viết mã một dòng nào. Kiểm tra một số tính năng thú vị của Hevo
API REST của Python. Sử dụng API và yêu cầuHầu hết các lập trình viên Python sử dụng các yêu cầu để gửi các yêu cầu HTTP khi viết mã tương tác với API REST, được gọi là API REST của Python. Sự phức tạp của việc thực hiện các yêu cầu HTTP được trừu tượng hóa bằng cách sử dụng mô-đun Python REST API này. API REST của Python là một trong số ít các dự án xứng đáng được đối xử như thể nó thuộc về thư viện tiêu chuẩn Trước tiên, bạn phải cài đặt các yêu cầu trước khi có thể sử dụng chúng. Bạn có thể cài đặt nó với pip
Bạn có thể bắt đầu gửi yêu cầu HTTP ngay bây giờ khi bạn đã cài đặt yêu cầu 1) NHẬNKhi làm việc với API REST của Python, một trong những phương thức HTTP được sử dụng nhiều nhất là GET. Bạn có thể sử dụng phương pháp này để lấy tài nguyên từ API. Vì GET là phương thức chỉ đọc nên không được sử dụng nó để thay đổi tài nguyên hiện có Bạn sẽ sử dụng một dịch vụ có tên JSONPlaceholder để kiểm tra GET và các phương thức khác trong phần này. Dịch vụ miễn phí này tạo ra các điểm cuối API Python REST giả trả về kết quả có thể được xử lý theo yêu cầu Để kiểm tra điều này, hãy mở REPL của Python và chạy các lệnh bên dưới để gửi yêu cầu GET tới điểm cuối JSONPlaceholder
Yêu cầu được gọi bởi mã này. sử dụng get() để thực hiện yêu cầu GET tới /todos/1, yêu cầu này trả về mục việc cần làm với ID 1 làm phản hồi. Sau đó, dữ liệu do API trả về có thể được xem bằng lệnh gọi. json() trên đối tượng phản hồi JSON, kho lưu trữ khóa-giá trị có thể so sánh với từ điển Python, được sử dụng để định dạng dữ liệu trả về. Đó là định dạng dữ liệu được sử dụng rộng rãi mà hầu hết các API REST của Python sử dụng làm định dạng trao đổi trên thực tế Bạn có thể xem thêm thông tin về câu trả lời ngoài dữ liệu JSON từ API REST của Python
Bạn có thể thấy mã trạng thái HTTP bằng cách truy cập phản hồi. mã trạng thái. Với phản hồi. tiêu đề, bạn có thể thấy tiêu đề HTTP của phản hồi. Từ điển này lưu trữ thông tin về phản hồi, chẳng hạn như Loại nội dung của phản hồi 2) BÀI ĐĂNGHãy xem cách bạn có thể xây dựng tài nguyên mới bằng cách sử dụng các yêu cầu để POST dữ liệu lên API REST của Python. Bạn sẽ sử dụng JSONPlaceholder một lần nữa, nhưng lần này với dữ liệu JSON có trong yêu cầu. Đây là thông tin bạn sẽ gửi
Một mục việc cần làm mới được đại diện bởi JSON này. Để tạo một việc cần làm mới, hãy quay lại Python REPL và nhập mã sau
Để thêm một việc cần làm mới vào hệ thống, bạn sử dụng các yêu cầu. bưu kiện() Để bắt đầu, hãy tạo một từ điển với dữ liệu cho việc cần làm của bạn. Sau đó, bạn gửi từ điển này để yêu cầu. post() Tham số từ khóa JSON. Khi bạn làm điều này, yêu cầu. post() đặt tiêu đề HTTP Loại nội dung của yêu cầu thành application/json. Nó cũng chuyển đổi việc cần làm thành một chuỗi JSON, chuỗi này sẽ thêm vào phần thân của yêu cầu Nếu bạn không sử dụng đối số từ khóa JSON để phân phối dữ liệu JSON, bạn sẽ phải xác định Loại nội dung theo cách thủ công và tuần tự hóa JSON. Đây là một sự thay thế cho mã trước đó
Bạn thêm một từ điển tiêu đề với một Loại nội dung tiêu đề duy nhất được đặt thành ứng dụng/json trong mã này. Điều này thông báo cho Python REST API rằng yêu cầu chứa dữ liệu JSON Thay vì cung cấp việc cần làm cho tham số JSON, bạn gọi json. dumps(to-do) để tuần tự hóa nó trước khi sử dụng các yêu cầu. bưu kiện(). Bạn cung cấp nó cho đối số từ khóa dữ liệu sau khi nó được tuần tự hóa. Đối số dữ liệu chỉ định dữ liệu nào sẽ được đưa vào yêu cầu. Bạn cũng có thể đặt tiêu đề HTTP theo cách thủ công bỏ qua từ điển tiêu đề theo yêu cầu. bưu kiện() Khi bạn sử dụng yêu cầu. post() như thế này, bạn sẽ nhận được kết quả như trước, nhưng bạn có quyền kiểm soát yêu cầu tốt hơn Để đọc JSON được API REST của Python trả về, hãy gọi phản hồi. json(). Một id đã tạo cho việc cần làm mới được bao gồm trong JSON. Một tài nguyên mới đã được tạo, như được hiển thị bởi mã trạng thái 201 3) XÓACuối cùng, nếu bạn muốn xóa hoàn toàn một tài nguyên, bạn có thể sử dụng DELETE. Để xóa một việc cần làm, hãy sử dụng đoạn mã sau
Yêu cầu là những gì bạn đặt tên cho họ. Sử dụng xóa () với URL API chứa ID của việc cần làm mà bạn muốn xóa. Thao tác này sẽ gửi một yêu cầu XÓA tới API REST của Python, thao tác này sẽ xóa tài nguyên khớp với. API trả về một đối tượng JSON trống cho biết rằng tài nguyên đã bị hủy sau khi nó bị xóa Gói yêu cầu là một công cụ tuyệt vời để làm việc với API REST của Python và là thứ bắt buộc phải có trong hộp công cụ Python của bạn. Bạn sẽ sang số trong phần tiếp theo và phân tích những gì cần thiết để tạo một API REST của Python 4) ĐẶTCác yêu cầu hỗ trợ tất cả các phương thức HTTP khác nhau mà bạn sử dụng với API REST của Python, ngoài GET và POST. Đoạn mã dưới đây tạo một yêu cầu PUT để cập nhật một việc cần làm hiện có với thông tin mới. Mọi dữ liệu được gửi bằng yêu cầu PUT sẽ ghi đè hoàn toàn các giá trị hiện tại của việc cần làm Bạn sẽ sử dụng cùng một điểm cuối JSONPlaceholder như đối với GET và POST, nhưng lần này hãy thêm 10 vào cuối URL. Điều này hướng dẫn API REST của Python cập nhật việc cần làm sau
Điều đầu tiên bạn làm là gọi điện thoại để yêu cầu. Để xem nội dung của một việc cần làm hiện có, hãy sử dụng get(). Sau đó, bạn đưa ra yêu cầu. Để thay thế các giá trị việc cần làm hiện có, hãy sử dụng put() bằng dữ liệu JSON mới. Khi bạn gọi phản hồi, bạn có thể thấy các giá trị mới với json(). Vì bạn đang thay đổi tài nguyên hiện có thay vì tạo tài nguyên mới, các yêu cầu PUT thành công luôn trả về 200 thay vì 201 5) VÁTiếp theo, bạn sẽ sử dụng các yêu cầu. patch() để thay đổi giá trị của trường được chỉ định của việc cần làm hiện có. Ngược lại, với PUT, PATCH sẽ không thay thế hoàn toàn tài nguyên hiện có. Nó chỉ thay đổi các giá trị trong JSON được cung cấp cùng với yêu cầu. Để kiểm tra yêu cầu. patch(), bạn sẽ sử dụng công việc tương tự như trong ví dụ trước. Các giá trị hiện tại như sau Bây giờ bạn có thể thêm một giá trị mới vào tiêu đề ________số 8Khi bạn sử dụng phản hồi. json(), bạn sẽ nhận thấy tiêu đề đã được đổi thành “Cắt cỏ” REST và Python. Xây dựng APIThiết kế API REST của Python là một chủ đề rộng lớn với nhiều cấp độ. Như với hầu hết mọi thứ trong công nghệ, có nhiều quan điểm khác nhau về cách tốt nhất để phát triển API. Phần này sẽ đi qua một số quy trình đề xuất cần thực hiện khi phát triển API Xác định tài nguyên. Bước đầu tiên trong việc phát triển API Python REST là xác định các tài nguyên mà API sẽ xử lý. Các tài nguyên này thường được gọi là danh từ số nhiều, chẳng hạn như người tiêu dùng, sự kiện hoặc giao dịch. Khi bạn xác định các tài nguyên khác nhau trong dịch vụ web của mình, bạn sẽ tạo một danh sách các danh từ đại diện cho các loại dữ liệu khác nhau mà người tiêu dùng có thể kiểm soát bằng API. Tính đến mọi tài nguyên lồng nhau khi bạn thực hiện. Ví dụ: khách hàng có thể có doanh số bán hàng và sự kiện thậm chí có thể có khách. Việc tạo các hệ thống phân cấp tài nguyên này sẽ hỗ trợ định nghĩa các điểm cuối API Xác định điểm cuối. Các điểm cuối sau được sử dụng sau khi tài nguyên trong dịch vụ web của bạn được xác định HTTP MethodAPI EndpointDescriptionGET 01Get a list of transactions.GET/transactions/Tiếp theo, chúng tôi đã đề cập đến một số ví dụ về điểm cuối cho tài nguyên lồng nhau. Các điểm cuối được cung cấp bên dưới dành cho "khách", được lồng trong tài nguyên sự kiện HTTP MethodAPI EndpointDescriptionGET/events/ 02Partially update a guest.DELETE/events/Chọn định dạng trao đổi dữ liệu. Hai tùy chọn phổ biến nhất để định dạng dữ liệu dịch vụ web là XML và JSON. Nói chung, XML phổ biến với API SOAP và JSON phổ biến hơn với API REST của Python. Hãy xem đoạn mã dưới đây để biết cuốn sách được định dạng là XML 0Để mã hóa dữ liệu, XML sử dụng một chuỗi các thành phần. Mỗi phần tử có một thẻ mở và thẻ đóng, cũng như dữ liệu ở giữa. Các thành phần có thể xếp chồng lên nhau trong các thành phần khác. Điều này có thể được nhìn thấy trong ví dụ trên, trong đó nhiều thẻ tác giả> được lồng bên trong các tác giả> Mã được cung cấp bên dưới dành cho sách được định dạng bằng JSON 1JSON, giống như một từ điển Python, lưu trữ dữ liệu theo cặp khóa-giá trị. JSON, giống như XML, cho phép bạn phân lớp dữ liệu ở mọi cấp độ, cho phép bạn biểu diễn dữ liệu phức tạp Cả JSON và XML về cơ bản đều không vượt trội so với cái kia, nhưng JSON được các nhà phát triển API Pyhton REST ưa thích hơn. Điều này đặc biệt đúng khi API REST của Python được sử dụng với khung giao diện người dùng như React hoặc Vue Thiết kế phản hồi thành công. Bước tiếp theo sau khi định dạng dữ liệu được chọn là phản hồi các yêu cầu HTTP. Điều kiện tiên quyết là bạn phải chọn một định dạng tương tự cho từng API REST của Python, bao gồm cả mã trạng thái HTTP phù hợp Trong phần này, bạn sẽ thấy một số câu trả lời HTTP mẫu cho API hư cấu xử lý kho xe. Những ví dụ này sẽ giúp bạn hiểu cách cấu trúc câu trả lời API của mình. Để làm rõ, bạn sẽ kiểm tra các câu trả lời và yêu cầu HTTP thô thay vì các truy vấn giống như thư viện HTTP Để bắt đầu, hãy xem xét yêu cầu GET sau đây tới /cars, yêu cầu này trả về danh sách ô tô 2Yêu cầu HTTP có bốn phần
Bốn thành phần này là tất cả những gì được yêu cầu để gửi yêu cầu GET tới /cars. Hãy xem qua câu trả lời ngay bây giờ. JSON là định dạng truyền dữ liệu được sử dụng bởi API này 3API cung cấp danh sách ô tô dưới dạng phản hồi. Mã trạng thái 200 OK cho biết câu trả lời đã thành công. Câu trả lời cũng bao gồm tiêu đề Kiểu nội dung với giá trị application/json. Người dùng được hướng dẫn phân tích câu trả lời dưới dạng JSON Điều quan trọng là luôn cung cấp tiêu đề Loại nội dung phù hợp trong phản hồi của bạn. Đặt Loại nội dung thành application/json nếu bạn đang gửi JSON. Nếu là XML, hãy đặt nó thành application/xml. Tiêu đề này hướng dẫn người dùng cách phân tích dữ liệu Ngoài ra, bạn nên bao gồm một mã trạng thái thích hợp trong câu trả lời của mình. Bạn nên trả lại 200 OK cho mỗi yêu cầu NHẬN thành công. Điều này thông báo cho người dùng rằng yêu cầu của họ đã được xử lý chính xác Xem xét yêu cầu GET sau đây, lần này là cho một ô tô 4Yêu cầu HTTP này truy vấn API cho xe hơi 07. Đây là phản hồi 5Câu trả lời này cung cấp một đối tượng JSON chứa thông tin về ô tô. Nó không cần phải được bao bọc trong một danh sách bởi vì nó là một đối tượng duy nhất. Câu trả lời này, giống như câu trả lời trước, có mã trạng thái là 200 OK Đoạn mã dưới đây cung cấp thông tin chi tiết về yêu cầu POST để thêm xe mới 6Yêu cầu POST này bao gồm JSON cho ô tô mới. Nó thay đổi tiêu đề Content-Type thành application/json để API hiểu được loại nội dung của yêu cầu. API sẽ tạo ô tô mới dựa trên JSON Đây là phản hồi 7Mã trạng thái 201 Đã tạo trong phản hồi này cho người dùng biết rằng một tài nguyên mới đã được tạo. Đối với tất cả các truy vấn POST thành công, hãy sử dụng 201 Đã tạo thay vì 200 OK Câu trả lời này cũng cung cấp một bản sao của phương tiện mới có id do API tạo. Điều quan trọng là phải bao gồm id trong phản hồi để người dùng có thể thay đổi lại tài nguyên Dưới đây đưa ra trong yêu cầu PUT; 8Yêu cầu này cập nhật ô tô với tất cả dữ liệu mới bằng cách sử dụng id từ yêu cầu trước đó. PUT, như đã nói trước đây, thay đổi tất cả các trường trên tài nguyên bằng dữ liệu mới. Đây là phản hồi 9Câu trả lời chứa một bản sao của ô tô với thông tin được cập nhật. Một lần nữa, với yêu cầu PUT, bạn phải luôn trả lại toàn bộ tài nguyên. Điều này cũng đúng với yêu cầu PATCH 0Yêu cầu PATCH chỉ thay đổi một phần của tài nguyên. Các trường vin và color trong yêu cầu trước đó sẽ được sửa đổi với các giá trị mới. Đây là câu trả lời của tôi 1Câu trả lời bao gồm một bản sao hoàn chỉnh của ô tô. Chỉ có các trường vin và màu sắc đã được sửa đổi, như bạn có thể thấy Cuối cùng, hãy xem xét API Python REST của bạn sẽ phản ứng như thế nào khi nhận được yêu cầu XÓA. Đây là một yêu cầu XÓA để thoát khỏi một chiếc xe hơi 2Yêu cầu XÓA này hướng dẫn API xóa ô tô có ID 4. Đây là phản hồi 3Câu trả lời này chỉ bao gồm mã trạng thái 204 Không có nội dung. Mã trạng thái này cho người dùng biết rằng thao tác đã thành công nhưng không có nội dung nào được gửi trong phản hồi. Điều này hợp lý vì ô tô đã bị loại bỏ. Không có lý do gì để cung cấp một bản sao của câu trả lời Khi mọi thứ diễn ra như dự định, các phản hồi ở trên hoạt động hoàn hảo, nhưng điều gì xảy ra nếu có vấn đề với yêu cầu? Thiết kế phản hồi lỗi Luôn có khả năng các truy vấn đến API Python REST của bạn sẽ không thành công. Đó là một cách thực hành tốt để chỉ định cách phản hồi lỗi sẽ xuất hiện. Những câu trả lời này sẽ cung cấp giải thích về vấn đề cũng như mã trạng thái có liên quan. Bạn sẽ thấy một vài trường hợp trong phần này Để bắt đầu, hãy xem xét yêu cầu sau đối với tài nguyên không tồn tại trong API 4Người dùng cố gắng gửi yêu cầu GET tới /motorcycles, yêu cầu này không tồn tại. API trả về phản hồi sau 5Câu trả lời này có mã trạng thái 404 Not Found. Ngoài ra, câu trả lời bao gồm một đối tượng JSON với thông báo lỗi chi tiết. Cung cấp cho người dùng một thông báo lỗi có ý nghĩa cung cấp cho họ ngữ cảnh bổ sung cho sự cố Xem xét phản hồi lỗi sau khi người dùng gửi yêu cầu không chính xác 6Yêu cầu POST này chứa JSON, tuy nhiên, nó không được định dạng đúng. Một dấu ngoặc nhọn đóng () được bỏ qua ở phần kết luận. Dữ liệu này không thể được xử lý bởi API. Câu trả lời lỗi thông báo cho người dùng về sự cố 7Câu trả lời này chứa thông báo lỗi thông tin cũng như mã trạng thái 400 Yêu cầu không hợp lệ, thông báo cho người dùng rằng yêu cầu phải được khắc phục Ngay cả khi yêu cầu được hình thành đúng cách, vẫn có nhiều cách khác nhau khiến yêu cầu không chính xác. Trong ví dụ sau, người dùng gửi yêu cầu POST với loại phương tiện không được hỗ trợ 8Người dùng cung cấp XML trong yêu cầu này, nhưng API chỉ chấp nhận JSON. Các câu trả lời API như sau 9Mã trạng thái 415 Loại phương tiện không được hỗ trợ được cung cấp trong phản hồi này để cho biết rằng yêu cầu POST chứa loại dữ liệu mà API không chấp nhận. Số lỗi này có ý nghĩa đối với dữ liệu có định dạng không chính xác, nhưng dữ liệu bị lỗi mặc dù ở định dạng phù hợp thì sao? Trong ví dụ sau, người dùng gửi yêu cầu POST nhưng bao gồm dữ liệu ô tô không khớp với bất kỳ trường dữ liệu nào khác 0Người dùng thêm các trường topSpeed và bảo hành vào JSON trong yêu cầu này. Vì các trường này không được API hỗ trợ nên nó sẽ trả về thông báo lỗi 1Mã trạng thái 422 Thực thể không thể xử lý được bao gồm trong câu trả lời này. Số trạng thái này cho biết rằng không có vấn đề gì với yêu cầu nhưng dữ liệu không chính xác. Dữ liệu đến phải được xác thực thông qua API REST. Nếu người dùng bao gồm dữ liệu trong yêu cầu, API sẽ xác thực dữ liệu đó và thông báo cho người dùng về bất kỳ vấn đề nào Một trong những chức năng quan trọng nhất của API Python REST là phản hồi các truy vấn, cả thành công và không thành công. Người dùng sẽ có thể tạo ứng dụng xung quanh dịch vụ web của bạn nếu API của bạn dễ sử dụng và cho kết quả chính xác. May mắn thay, một số khung web Python xuất sắc đã loại bỏ những khó khăn khi xử lý các yêu cầu HTTP và phản hồi chúng. Trong phần tiếp theo, bạn sẽ xem xét ba giải pháp phổ biến Xác thực với API REST của PythonCho đến nay, bạn đã thấy cách sử dụng các API REST Python mở không yêu cầu bất kỳ ủy quyền nào. Tuy nhiên, nhiều API REST của Python, đặc biệt là những API xử lý dữ liệu nhạy cảm, yêu cầu bạn xác thực trước khi bạn có thể truy cập các điểm cuối cụ thể Có một vài cơ chế xác thực Python REST API điển hình mà Yêu cầu Python có thể xử lý. Phương pháp đơn giản nhất là sử dụng HTTP Basic Auth để gửi thông tin đăng nhập và mật khẩu của bạn đến điểm cuối có liên quan; 2Lấy mã thông báo truy cập, hoạt động tương đương với tổ hợp tên người dùng/mật khẩu, là một kỹ thuật an toàn hơn; . Quản lý mã thông báo truy cập bằng phiênKhi làm việc với Yêu cầu Python, Đối tượng phiên có ích như một cách để lưu các tham số cần thiết để thực hiện nhiều yêu cầu trong một phiên, chẳng hạn như mã thông báo truy cập. Ngoài ra, việc duy trì cookie phiên có thể cải thiện tốc độ bằng cách loại bỏ nhu cầu bắt đầu kết nối mới cho mỗi yêu cầu 3Làm cách nào để xử lý lỗi HTTP với các yêu cầu Python?Đoạn mã được cung cấp sẽ giúp bạn hiểu cách tương tác với API trong trường hợp xảy ra lỗi HTTP và khi muốn biết tại sao quá trình dừng xử lý ở đoạn mã còn lại trong chức năng cũng như ở cấp độ gọi Trước tiên, bạn cần thực hiện yêu cầu ban đầu bằng cách sử dụng thư viện "yêu cầu", sau đó giới thiệu các khối "ngoại trừ" cho từng loại lỗi 4Python và REST. Công cụ tốt nhất cho API Python RESTTrong phần này, bạn sẽ tìm hiểu về ba framework phổ biến của Python để tạo API REST của Python. Mỗi khung đều có ưu điểm và nhược điểm, vì vậy bạn sẽ phải quyết định khung nào phù hợp với mình. Với mục đích đó, API Python REST của mỗi khung sẽ được xem xét trong các phần sau. Tất cả các ví dụ sẽ dành cho API Python REST quản lý một nhóm quốc gia Các trường sau sẽ có mặt ở mỗi quốc gia
Các trường tên, thủ đô, vùng dùng để chứa thông tin về một quốc gia nào đó trên thế giới Dữ liệu được gửi từ API REST của Python hầu như luôn luôn từ cơ sở dữ liệu. Bài học này không bao gồm kết nối với cơ sở dữ liệu. Dữ liệu của bạn sẽ được lưu trữ trong danh sách Python trong các ví dụ bên dưới. Ví dụ khung Django REST là một ngoại lệ, vì nó sử dụng cơ sở dữ liệu SQLite mà Django tạo ra Bạn sẽ sử dụng các quốc gia làm điểm cuối chính cho cả ba khuôn khổ để giữ cho mọi thứ nhất quán. Đối với cả ba khung, bạn sẽ sử dụng JSON làm định dạng dữ liệu của mình 1) Khung Django RESTKhung Django REST là một giải pháp thay thế phổ biến khác để tạo API Python REST. Khung Django REST là một plugin Django cung cấp chức năng API Python REST cho một dự án Django Để làm việc với khung Django REST, bạn sẽ cần một dự án Django. Nếu bạn đã có, bạn có thể sử dụng các mẫu trong khu vực này để nâng cao nó. Nếu không, chỉ cần làm theo để tạo một dự án Django và kết hợp khung Django REST Để bắt đầu, hãy sử dụng pip để cài đặt Django và djangorestframework Django và djangorestframework đã được cài đặt. Bây giờ bạn có thể tạo một dự án Django mới bằng công cụ Django-admin. Để bắt đầu dự án của bạn, gõ lệnh sau Lệnh này tạo một thư mục mới có tên countryapi trong thư mục hiện tại của bạn. Thư mục này chứa tất cả các tệp cần thiết để khởi chạy dự án Django của bạn. Sau đó, bạn sẽ xây dựng một ứng dụng Django mới trong dự án của mình. Django chia chức năng của dự án thành các ứng dụng. Mỗi ứng dụng phụ trách một khía cạnh khác nhau của dự án Thay đổi thư mục thành countryapi và chạy lệnh sau để xây dựng ứng dụng Trong dự án của bạn, một thư mục quốc gia mới được tạo. Các tệp cơ sở của ứng dụng được đặt trong thư mục này Bây giờ bạn đã xây dựng một ứng dụng đang hoạt động, bạn sẽ cần thông báo cho Django về ứng dụng đó. Một thư mục có tên countryapi tồn tại bên cạnh thư mục quốc gia bạn vừa tạo. Thư mục này bao gồm các thông số và cài đặt của dự án của bạn Mở thư mục countryapi và tìm cài đặt. tập tin py. Để thông báo cho Django về ứng dụng quốc gia và khung Django REST, hãy thêm các dòng sau vào ỨNG DỤNG ĐÃ CÀI ĐẶT 5Một dòng cho khung ứng dụng và nghỉ ngơi của các quốc gia đã được thêm vào Bạn có thể thắc mắc tại sao khung API Django của Python REST cần được thêm vào danh sách ứng dụng. Vì khung Django REST chỉ là một ứng dụng Django khác, bạn phải đưa nó vào. Các plugin Django là các ứng dụng Django được đóng gói và phân phối mà bất kỳ ai cũng có thể sử dụng Để xác định các trường dữ liệu của bạn, bạn sẽ cần thiết lập mô hình Django. Cập nhật mô hình. py trong ứng dụng quốc gia với đoạn mã sau 6Một mô hình Quốc gia được xác định bởi mã này. Mô hình này sẽ được Django sử dụng để xây dựng bảng và cột cơ sở dữ liệu cho thông tin quốc gia Để Django cập nhật cơ sở dữ liệu dựa trên mô hình này, hãy sử dụng các lệnh sau 7Di chuyển Django được sử dụng trong các quy trình này để tạo một bảng mới trong cơ sở dữ liệu Bảng này ban đầu trống, tuy nhiên, sẽ hữu ích nếu có một số dữ liệu để kiểm tra khung Django REST. Để thực hiện điều này, bạn sẽ sử dụng một vật cố định Django để nhập dữ liệu vào cơ sở dữ liệu Sao chép và lưu dữ liệu JSON bên dưới vào một tệp có tên là quốc gia. json trong thư mục quốc gia 8Các mục cơ sở dữ liệu của ba quốc gia được bao gồm trong JSON này. Để tải dữ liệu này vào cơ sở dữ liệu, hãy chạy lệnh sau 9Ba hàng được thêm vào cơ sở dữ liệu là kết quả của việc này Ứng dụng Django của bạn hiện đã sẵn sàng để sử dụng và được điền dữ liệu. Khung Django REST hiện có thể được thêm vào dự án Khung Django REST chuyển đổi mô hình Django thành JSON để sử dụng trong API REST của Python. Bộ nối tiếp mô hình được sử dụng để làm điều này. Khung công tác Django REST sử dụng trình tuần tự hóa mô hình để cho nó biết cách chuyển đổi một phiên bản mô hình thành JSON và dữ liệu nào cần bao gồm Bạn sẽ sử dụng mô hình Quốc gia để phát triển bộ nối tiếp của mình. Bắt đầu bằng cách tạo một serializers. py trong ứng dụng quốc gia. Sau đó, chỉnh sửa serializers. py và thêm đoạn mã sau 0CountrySerializer là một serializer phân lớp các serializers khác. ModelSerializer tự động tạo nội dung JSON dựa trên các trường mô hình của Quốc gia. Một lớp con ModelSerializer sẽ bao gồm tất cả các trường từ mô hình Django trong JSON trừ khi có quy định khác. Đặt các trường thành danh sách dữ liệu bạn muốn đưa vào để thay đổi hành vi này Khung Django REST, giống như Django, sử dụng các khung nhìn để truy vấn dữ liệu từ cơ sở dữ liệu và hiển thị cho người dùng. Bạn có thể phân lớp ModelViewSet của khung công tác Django REST, chứa các chế độ xem mặc định cho các hoạt động API REST API điển hình của Python, thay vì xây dựng các chế độ xem API REST từ đầu Những hành động này ánh xạ tới các phương thức HTTP thông thường mà bạn mong đợi trong API REST, như bạn có thể thấy. Bạn có thể ghi đè những hành động này trong lớp con của mình hoặc thêm những hành động mới dựa trên yêu cầu API của bạn Mã cho lớp con ModelViewSet được gọi là CountryViewSet được hiển thị bên dưới. Các chế độ xem cần thiết để quản lý dữ liệu Quốc gia sẽ được tạo bởi lớp này. Bên trong ứng dụng quốc gia, thêm đoạn mã sau vào chế độ xem. py 1Lớp Serializer được đặt thành CountrySerializer và bộ truy vấn () được đặt thành Quốc gia. các đối tượng. tất cả trong lớp học này. Điều này hướng dẫn khung công tác Django REST sử dụng trình nối tiếp nào và cách truy vấn cơ sở dữ liệu cho tập hợp các chế độ xem này Sau khi tạo chế độ xem, chúng phải được ánh xạ tới các URL hoặc điểm cuối có liên quan. Khung Django REST cung cấp một DefaultRouter sẽ tự động tạo URL cho ModelViewSet Trong ứng dụng của quốc gia, hãy tạo một url. py và thêm đoạn mã sau vào nó 2Mã này đăng ký CountryViewSet dưới URL của quốc gia và xây dựng một DefaultRouter. Thao tác này sẽ đặt tất cả các URL của CountryViewSet vào thư mục /countries/ Cuối cùng, bạn phải thay đổi các url cơ sở của dự án. py để thêm tất cả URL của các quốc gia của dự án. Thay đoạn mã sau vào url. py trong thư mục countryapi 3Điều này đặt tất cả các URL trong thư mục /countries/. Bây giờ bạn đã sẵn sàng sử dụng API REST Pyhton dựa trên Django của mình. Để khởi động máy chủ phát triển Django, hãy chạy lệnh sau trong thư mục gốc của countryapi Máy chủ phát triển đã được bắt đầu. Để nhận danh sách tất cả các quốc gia trong dự án Django của bạn, hãy thực hiện yêu cầu GET tới /countries/ 4 5Khung Django REST phản hồi bằng phản hồi JSON chứa ba quốc gia bạn đã chỉ định trước đó. Vì phản hồi ở trên được định dạng để đọc, phản hồi của bạn sẽ khác Tất cả các điểm cuối API tiêu chuẩn đều có URL được cung cấp bởi DefaultRouter mà bạn đã tạo trong quốc gia/url. py
Dưới đây là một vài điểm cuối bổ sung để kiểm tra. Tạo một Quốc gia mới trong dự án Django của bạn bằng cách gửi yêu cầu POST tới /countries/ 6JSON bạn đã gửi trong yêu cầu được sử dụng để tạo Quốc gia mới. Mã trạng thái Đã tạo 201 và Quốc gia mới được trả về bởi khung Django REST Bằng cách gửi yêu cầu tới GET /countries/country id>/ với id hiện có, bạn có thể truy cập Quốc gia hiện có. Để có được quốc gia đầu tiên, hãy chạy lệnh sau 4 8Thông tin của Quốc gia đầu tiên được đưa vào phản hồi. Chỉ các truy vấn GET và POST được đề cập trong các ví dụ này. Vui lòng thử nghiệm với các yêu cầu PUT, PATCH và DELETE để khám phá cách bạn có thể quản lý hoàn toàn mô hình của mình thông qua API REST của Python Như bạn có thể thấy, khung Django REST là một lựa chọn tuyệt vời để tạo API Python REST, đặc biệt nếu bạn đã có dự án Django và muốn thêm API 2) BìnhFlask là một microframework Python có thể được sử dụng để tạo các ứng dụng web và API REST của Python. Flask cung cấp nền tảng vững chắc cho Ứng dụng của bạn đồng thời cho phép bạn đưa ra các quyết định thiết kế khác nhau. Trách nhiệm chính của Flask là xử lý các yêu cầu HTTP và định tuyến chúng đến chức năng ứng dụng có liên quan Đối với API REST của Python, đây là một ứng dụng Flask mẫu 9Để quản lý danh sách các quốc gia, ứng dụng này xác định điểm cuối API / quốc gia. Nó có thể xử lý hai loại yêu cầu
Cài đặt bình với pip sẽ cho phép bạn dùng thử ứng dụng này Lưu mã trong một tệp có tên là ứng dụng. py sau khi cài đặt bình. Để thực thi ứng dụng Flask này, trước tiên bạn phải đặt biến môi trường FLASK APP thành ứng dụng. py. Điều này hướng dẫn Flask về tệp ứng dụng của bạn được lưu trữ trong Bên trong thư mục chứa ứng dụng. py, hãy chạy lệnh sau Trong trình bao hiện tại, điều này đặt FLASK APP thành ứng dụng. py. Bạn cũng có thể thay đổi FLASK ENV thành development để chạy Flask ở chế độ debug Chế độ gỡ lỗi sẽ khởi động lại ứng dụng sau khi tất cả các mã thay đổi, ngoài việc cung cấp các thông báo lỗi hữu ích. Bạn sẽ phải khởi động lại máy chủ mỗi khi thực hiện thay đổi nếu không sử dụng chế độ gỡ lỗi Bây giờ bạn đã thiết lập tất cả các biến môi trường của mình, bạn có thể khởi động máy chủ phát triển Flask bằng cách nhập lệnh chạy bình 0Thao tác này sẽ khởi chạy một máy chủ chạy chương trình. truy cập http. //127. 0. 0. 1. 5000/quốc gia trong trình duyệt của bạn và bạn sẽ thấy phản hồi sau 1Ba quốc gia được xác định khi bắt đầu ứng dụng. py được bao gồm trong phản hồi JSON này. Để chứng minh cách thức hoạt động của nó, hãy xem đoạn mã sau 2Mã này kết nối các yêu cầu GET với một chức năng trong ứng dụng bằng cách sử dụng @app. get(), một trình trang trí tuyến đường Flask. Flask gọi chức năng được trang trí để xử lý yêu cầu HTTP và trả về phản hồi khi bạn truy cập /countries Trong đoạn mã trên nhận được. các quốc gia () chấp nhận danh sách các quốc gia Python và biến nó thành JSON bằng cách sử dụng jsonify (). Trong phản hồi, JSON này được trả về Hãy xem chức năng add_country() ngay bây giờ. Hàm này xử lý các yêu cầu POST tới /countries và cho phép bạn thêm một quốc gia mới vào danh sách. Nó nhận thông tin về yêu cầu HTTP hiện tại bằng cách sử dụng đối tượng yêu cầu Flask 3Các hoạt động sau đây được thực hiện bởi chức năng này
add_country() cũng gọi _find_next_id() để xác định id cho quốc gia mới 4Hàm tiện ích này chọn tất cả ID quốc gia bằng biểu thức trình tạo và sau đó gọi max() trên chúng để lấy số lớn nhất. Để sử dụng ID tiếp theo, nó sẽ tăng giá trị này lên một Curl, tiện ích dòng lệnh cho phép bạn gửi yêu cầu HTTP từ dòng lệnh, có thể được sử dụng để kiểm tra điểm cuối này trong trình bao. Bạn sẽ thêm một quốc gia mới vào danh sách tại đây ________ 45 ________ 46 ________ 47Có một số lựa chọn cần lưu ý khi sử dụng lệnh curl
Curl truyền dữ liệu JSON trong một yêu cầu POST với tiêu đề Kiểu nội dung được đặt thành application/json khi các cài đặt này được đặt. API REST của Python phản hồi với 201 CREATED và JSON cho quốc gia mới được thêm vào Để xác thực rằng quốc gia mới đã được thêm vào, hãy sử dụng curl để thực hiện yêu cầu GET tới /countries. Nếu bạn không bao gồm -X trong lệnh cuộn tròn của mình, nó sẽ mặc định là yêu cầu GET 8 9Điều này trả về toàn bộ danh sách các quốc gia trong hệ thống, bắt đầu từ dưới cùng với mới nhất Đây chỉ là một ví dụ nhỏ về những gì Flask có thể thực hiện. Điểm cuối cho tất cả các phương thức HTTP khác có thể được thêm vào ứng dụng này. Flask cũng cung cấp một cộng đồng tiện ích mở rộng rộng lớn bổ sung các tính năng như trình kết nối cơ sở dữ liệu, xác thực và xử lý nền cho API REST của Python 3) NHANH CHÓNGFastAPI là một khung web Python được thiết kế dành riêng cho việc phát triển API. Nó sử dụng các gợi ý kiểu Python và bao gồm hỗ trợ async tích hợp. FastAPI là một API hiệu suất cao được xây dựng dựa trên Starlette và Pydantic Một ví dụ về API Python REST được tạo bằng FastAPI được hiển thị bên dưới 0______51 2 3 4 5Ứng dụng này sử dụng các tính năng của FastAPI để cung cấp API Python REST cho cùng dữ liệu quốc gia như các ví dụ khác Có thể dùng thử ứng dụng này bằng cách cài đặt FastAPI với pip Bạn cũng cần thiết lập uvicorn[standard], đây là máy chủ có thể chạy các ứng dụng FastAPI Lưu mã ở trên vào tệp có tên ứng dụng. py nếu bạn đã cài đặt cả FastApi và uvicorn. Để bắt đầu một máy chủ phát triển, gõ lệnh sau 6Máy chủ hiện đang hoạt động. truy cập http. //127. 0. 0. 1. 8000/quốc gia trong trình duyệt của bạn. FastAPI sẽ phản ứng như sau 5Một mảng JSON chứa danh sách các quốc gia được FastAPI trả về. Yêu cầu POST tới /countries. cũng có thể được sử dụng để thêm một quốc gia mới 8 9Bạn đã thêm một quốc gia mới. Bạn có thể xác nhận điều này với GET /countries 0 1FastAPI cung cấp danh sách JSON bao gồm quốc gia mới được thêm vào Ứng dụng FastAPI giống với ứng dụng Flask về hình thức. FastAPI, giống như Flask, cung cấp một bộ tính năng hạn chế. Nó không cố gắng bao quát mọi khía cạnh của phát triển ứng dụng web. Nó được tạo ra để giúp bạn tạo các API sử dụng các tính năng hiện đại của Python Một lớp có tên là Quốc gia, mở rộng BaseModel, có thể được tìm thấy ở đầu ứng dụng. py. Cấu trúc dữ liệu của Python REST API được mô tả bởi lớp Country 2Đây là một mô hình Pydantic đang hoạt động. Trong FastAPI, các mô hình Pydantic cung cấp một số tính năng hữu ích. Để thực thi kiểu dữ liệu cho từng trường trong lớp, họ sử dụng các chú thích kiểu Python. FastAPI hiện có thể tự động tạo JSON cho các điểm cuối API với các loại dữ liệu cần thiết. FastAPI cũng có thể sử dụng nó để xác thực JSON đến Vì có rất nhiều thứ đang diễn ra trong dòng đầu tiên nên sẽ rất hữu ích nếu làm nổi bật nó Dòng này chứa biến id quốc gia, chứa một số nguyên biểu thị ID của quốc gia. Nó sửa đổi hành vi của id quốc gia với chức năng Trường của Pydantic. Các đối số từ khóa nhà máy và bí danh mặc định được chuyển đến Trường trong ví dụ này Đối số mặc định của nhà máy được đặt thành _find next_id(). Khi một Quốc gia mới được tạo, đối số này xác định một chức năng để chạy. Id quốc gia sẽ được phân bổ giá trị trả về bí danh, đối số thứ hai, được đặt thành id. Điều này hướng dẫn FastAPI xuất khóa "id" trong JSON thay vì "id quốc gia" 3Bạn cũng có thể sử dụng id khi tạo Quốc gia mới với bí danh này. Điều này có thể nhìn thấy trong danh sách các quốc gia 3Danh sách này cung cấp ba phiên bản Quốc gia cho ba quốc gia đầu tiên của API. Các mô hình Pydantic bao gồm rất nhiều khả năng thú vị và giúp FastAPI dễ dàng phân tích cú pháp đầu vào JSON Hãy xem hai chức năng API của ứng dụng ngay bây giờ. Đối với các truy vấn GET tới /countries, phương thức đầu tiên, lấy các quốc gia(), đưa ra một danh sách các quốc gia 4FastAPI sẽ tạo JSON dựa trên các trường của mô hình Pydantic và thiết lập kiểu dữ liệu JSON phù hợp dựa trên gợi ý kiểu Python Khi bạn gửi yêu cầu POST tới /countries, mô hình Pydantic cũng giúp. Quốc gia tham số có chú thích Quốc gia, như bạn có thể thấy trong phương thức API thứ hai bên dưới 5FastAPI sẽ xác thực JSON đến theo Quốc gia nếu có loại chú thích này. FastAPI sẽ trả về lỗi nếu không khớp. Bạn có thể kiểm tra điều này bằng cách gửi một yêu cầu JSON không khớp với mô hình Pydantic 7 8 9FastAPI đã cung cấp phản hồi với mã trạng thái 422 Thực thể không thể xử lý và thông tin chi tiết về lỗi do JSON trong cuộc gọi này thiếu một giá trị cho khu vực. Mô hình Pydantic làm cho việc xác thực này trở nên khả thi Đây chỉ đơn giản là một phần nhỏ của những gì FastAPI có thể thực hiện. FastAPI đáng để xem xét cho API Python REST trong tương lai của bạn vì hiệu suất tuyệt vời và các tính năng hiện đại như chức năng không đồng bộ và tài liệu tự động Làm cách nào để tạo các yêu cầu API REST Python mạnh mẽ?Cú pháp rõ ràng và đơn giản của Python khiến nó trở thành một ngôn ngữ tuyệt vời để tương tác với các API REST của Python và ở dạng Python thực sự, một mô-đun có tên là Yêu cầu đã được tạo riêng để cung cấp tính năng đó. Yêu cầu Python là một công cụ mạnh mẽ cho phép bạn thực hiện các yêu cầu HTTP tới bất kỳ API nào trên thế giới bằng cách sử dụng vẻ đẹp đơn giản của Python Vai trò của HTTP, API và RESTGiao diện lập trình ứng dụng (API) là một dịch vụ web cung cấp quyền truy cập vào một số dữ liệu và chức năng mà các chương trình khác có thể sử dụng – và đôi khi thay đổi – bằng cách sử dụng các giao thức HTTP thông thường, tương tự như của trang web. Tại sao? . API có thể dễ dàng tích hợp vào nhiều ứng dụng. Phong cách kiến trúc nổi bật nhất của API cho các dịch vụ web được cho là REST. Nó là một tập hợp các tiêu chuẩn nhằm làm cho giao tiếp máy khách-máy chủ dễ dàng hơn. API REST của Python giúp truy cập dữ liệu dễ dàng hơn và hợp lý hơn Yêu cầuYêu cầu là những gì bạn thực hiện khi muốn tương tác với dữ liệu bằng API REST của Python. Một yêu cầu bao gồm các yếu tố sau điểm cuối. Đó là URL chỉ định loại dữ liệu mà bạn đang tương tác. URL điểm cuối được liên kết với một tài nguyên cụ thể trong API, tương tự như cách URL trang web được liên kết với một trang Phương pháp. Nó mô tả cách bạn xử lý tài nguyên tại điểm cuối đã chỉ định. API REST của Python cung cấp các cách để kích hoạt các khả năng Tạo, Đọc, Cập nhật và Xóa (CRUD) hoàn chỉnh. Sau đây là các phương thức phổ biến nhất được cung cấp bởi hầu hết các API REST của Python
Dữ liệu. Nếu bạn đang sử dụng phương thức API REST của Python liên quan đến việc sửa đổi dữ liệu, thì bạn phải gửi tải trọng dữ liệu với yêu cầu chứa bất kỳ dữ liệu nào sẽ được tạo hoặc cập nhật tiêu đề. Bất kỳ siêu dữ liệu nào phải được cung cấp cùng với yêu cầu, chẳng hạn như mã thông báo xác thực, loại nội dung sẽ được trả về và bất kỳ quy tắc bộ đệm nào, đều được bao gồm trong tiêu đề Phản hồiKhi bạn đưa ra yêu cầu, API sẽ phản hồi bằng phản hồi. Nó sẽ có một tiêu đề phản hồi và, nếu có, dữ liệu phản hồi, giống như yêu cầu. Tiêu đề phản hồi chứa siêu dữ liệu cần thiết về câu trả lời, trong khi dữ liệu phản hồi chứa phản hồi thực tế mà bạn đã yêu cầu. Đây có thể là bất kỳ loại dữ liệu nào, vì nó hoàn toàn phụ thuộc vào API. Văn bản thường được gửi dưới dạng JSON, mặc dù các ngôn ngữ đánh dấu khác, chẳng hạn như XML, cũng được hỗ trợ Hãy xem xét một yêu cầu đơn giản và câu trả lời. Chúng tôi sẽ sử dụng curl trong thiết bị đầu cuối để gửi yêu cầu GET tới Open Notify API. Đây là một API đơn giản nhưng hữu ích chứa dữ liệu về các phi hành gia hiện đang ở trong không gian 0Bạn sẽ nhận được phản hồi JSON với thông tin về các phi hành gia này; 1Cách sử dụng các yêu cầu Python với API RESTBây giờ, hãy xem những gì cần thiết để sử dụng Yêu cầu Python để giao tiếp với API REST. Đầu tiên, bạn sẽ cần phần mềm thiết yếu; . Sau đó, đi đến dòng lệnh và sử dụng pip để cài đặt mô-đun yêu cầu python 2Bây giờ bạn đã sẵn sàng để bắt đầu tương tác với API REST bằng các Yêu cầu Python, hãy đảm bảo bạn nhập mô-đun Yêu cầu vào bất kỳ tập lệnh nào bạn muốn sử dụng nó trong 3Cách yêu cầu dữ liệu với GET?Phương thức GET được sử dụng để truy xuất dữ liệu từ API REST của Python cho một tài nguyên được chỉ định; 4Đối tượng phản hồi chứa tất cả thông tin do máy chủ cung cấp để đáp ứng yêu cầu GET của bạn, bao gồm các tiêu đề và tải trọng dữ liệu. Khi mẫu mã này xuất đối tượng phản hồi tới bàn điều khiển, nó chỉ cung cấp tên lớp của đối tượng và mã trạng thái nhận được theo yêu cầu (thêm về mã trạng thái sau) Mặc dù thông tin này có thể quan trọng, nhưng nhiều khả năng bạn sẽ quan tâm đến nội dung của yêu cầu hơn, nội dung này có thể được truy xuất theo nhiều cách khác nhau 5Làm cách nào để sử dụng tham số truy vấn?Các truy vấn có thể được sử dụng để lọc dữ liệu do API trả về và chúng được cung cấp dưới dạng tham số truy vấn cho URL điểm cuối. Điều này được xử lý bởi tùy chọn params trong Yêu cầu Python, chấp nhận một đối tượng từ điển; 6Lệnh in sẽ cung cấp đầu ra sau 7Làm cách nào để tạo và sửa đổi dữ liệu bằng POST và PUT?Đối số dữ liệu, giống như các tham số truy vấn, có thể được sử dụng để thêm dữ liệu liên quan cho các yêu cầu phương thức PUT và POST 8Làm cách nào để truy cập các tiêu đề REST?Tiêu đề cũng có thể được sử dụng để lấy siêu dữ liệu từ phản hồi. Ví dụ: để kiểm tra ngày trả lời. Bạn chỉ có thể xác định nó bằng thuộc tính 'tiêu đề' như được hiển thị bên dưới 9Điều đó bao gồm các nguyên tắc cơ bản của API mở. Tuy nhiên, nhiều API không có sẵn cho công chúng. Hãy xem cách xác thực các API REST của Python cho chúng Làm cách nào để xác thực API Python REST?Cho đến nay, bạn đã học cách giao tiếp với các API REST mở không yêu cầu xác thực. Tuy nhiên, nhiều API REST yêu cầu bạn phải đăng nhập trước khi bạn có thể truy cập các điểm cuối cụ thể, đặc biệt nếu chúng xử lý dữ liệu nhạy cảm Có một số cơ chế xác thực điển hình cho API REST của Python mà Yêu cầu Python có thể xử lý. Phương pháp đơn giản nhất là cung cấp thông tin đăng nhập và mật khẩu của bạn dưới dạng HTTP Basic Auth cho điểm cuối có liên quan; 0Một tùy chọn an toàn hơn là lấy mã thông báo truy cập, đóng vai trò tương đương với tổ hợp tên người dùng/mật khẩu; . Chúng tôi sử dụng OAuth ba chân tại Nylas để cung cấp mã thông báo truy cập cho các tài khoản người dùng bị giới hạn trong phạm vi mô tả dữ liệu và chức năng chính xác có thể được truy cập Khi bạn có mã thông báo truy cập, bạn có thể đưa nó vào tiêu đề yêu cầu dưới dạng mã thông báo mang. đây là cách tiếp cận an toàn nhất để xác thực API REST bằng cách sử dụng mã thông báo truy cập 1Các kỹ thuật khác để xác thực API REST của Python bao gồm thông báo, Kerberos, NTLM và AuthBase. Việc sử dụng những thứ này được xác định bởi các cân nhắc kiến trúc của nhà sản xuất API REST Sử dụng phiên để quản lý mã thông báo truy cậpCác đối tượng phiên rất hữu ích khi xử lý các Yêu cầu Python như một cơ chế để duy trì các tham số cần thiết cho nhiều yêu cầu trong một phiên, chẳng hạn như mã thông báo truy cập. Ngoài ra, việc kiểm soát cookie phiên có thể giúp tăng tốc độ đáng kể vì bạn không phải bắt đầu một kết nối mới cho mỗi yêu cầu 3Làm cách nào để xử lý lỗi HTTP với các yêu cầu Python?Các lệnh gọi API có thể không phải lúc nào cũng diễn ra như mong đợi và có nhiều lý do khiến các yêu cầu API có thể không thành công, đó có thể là lỗi của máy chủ hoặc máy khách. Để làm cho mã của bạn linh hoạt hơn, nếu bạn định sử dụng API REST, bạn phải học cách quản lý các lỗi mà chúng báo cáo khi xảy ra sự cố. Phần này sẽ hướng dẫn bạn tất cả những gì bạn cần biết về cách xử lý lỗi HTTP bằng Yêu cầu Python Khái niệm cơ bản về mã trạng thái HTTPTrước khi đi sâu vào các chi tiết cụ thể của Yêu cầu Python, trước tiên chúng ta phải hiểu mã trạng thái HTTP là gì và chúng liên quan như thế nào đến các lỗi mà bạn có thể gặp phải Các mã trạng thái được phân loại thành một trong năm nhóm
Làm cách nào để kiểm tra lỗi HTTP với các yêu cầu Python?Phần tử mã trạng thái của các đối tượng phản hồi có thể được sử dụng để kiểm tra mọi sự cố do API báo cáo. Ví dụ sau đây minh họa cách sử dụng thuộc tính này để kiểm tra mã trạng thái HTTP thành công và 404 không tìm thấy, mặc dù định dạng này có thể được sử dụng cho bất kỳ mã trạng thái HTTP nào 3Để kiểm tra điều này, hãy xóa chữ cái cuối cùng khỏi điểm cuối URL; Nếu bạn muốn Yêu cầu đưa ra một ngoại lệ cho tất cả các mã lỗi (4xx và 5xx), hãy sử dụng phương thức tăng cho status() và nắm bắt các sự cố cụ thể với các ngoại lệ tích hợp sẵn của Yêu cầu. Mẫu mã tiếp theo thực hiện tương tự như mẫu trước 4Quá NhiềuChuyển hướng. Sự cần thiết phải chuyển hướng đến một trang web khác cho tài nguyên mà bạn đang yêu cầu thường được báo hiệu bằng mã trạng thái HTTP 3xx. Điều này có thể dẫn đến vòng lặp chuyển hướng vô tận trong một số trường hợp. Để giải quyết vấn đề này, hãy sử dụng lỗi TooManyRedirects trong mô-đun Yêu cầu Python. Để khắc phục sự cố này, có thể URL bạn đang sử dụng để truy cập tài nguyên không chính xác và phải được sửa đổi 5Bạn có thể chỉ định số lần chuyển hướng tối đa bằng các tùy chọn yêu cầu 6Ngoài ra, bạn có thể hủy kích hoạt chuyển hướng hoàn toàn trong tùy chọn yêu cầu của mình 7Lỗi kết nối. Cho đến nay, chúng tôi chỉ xem xét các lỗi do máy chủ trực tiếp tạo ra. Điều gì sẽ xảy ra nếu bạn hoàn toàn không nhận được phản hồi từ máy chủ? . Khi ứng dụng khách của bạn không thể kết nối với máy chủ, Yêu cầu Python sẽ đưa ra ngoại lệ ConnectionError 8Loại lỗi này có thể là tạm thời hoặc vĩnh viễn. Trong trường hợp đầu tiên, bạn nên thử lại yêu cầu để kiểm tra xem kết quả có khác không. Trong trường hợp sau, hãy đảm bảo rằng bạn đã sẵn sàng đối phó với tình trạng không thể lấy dữ liệu từ API kéo dài, điều này có thể khiến bạn phải tự điều tra các khó khăn về kết nối Hết giờ. Sự cố hết thời gian xảy ra khi bạn có thể kết nối với máy chủ API nhưng nó không hoàn thành yêu cầu trong giới hạn thời gian. Yêu cầu Python, giống như các sự cố trước đây mà chúng tôi đã xem xét, có thể xử lý lỗi này bằng cách sử dụng ngoại lệ Hết thời gian chờ 9Trong trường hợp này, thời gian chờ được đặt thành một phần giây bằng cách sử dụng các tham số yêu cầu. Bởi vì hầu hết các API không thể phản ứng nhanh như vậy, mã sẽ đưa ra lỗi hết thời gian chờ. Bạn có thể tránh sự cố này bằng cách kéo dài thời gian chờ của tập lệnh, tối ưu hóa yêu cầu của bạn để nhỏ hơn hoặc triển khai vòng lặp thử lại cho yêu cầu. Điều này cũng có thể chỉ ra sự cố với nhà cung cấp API. Một tùy chọn cuối cùng là sử dụng lệnh gọi API không đồng bộ để giữ cho mã của bạn không bị đóng băng khi chờ câu trả lời lớn hơn Làm cách nào để tạo yêu cầu API mạnh mẽ?Như chúng ta đã thấy, mô-đun Yêu cầu xử lý khéo léo các sự cố yêu cầu API điển hình bằng cách tận dụng khả năng xử lý ngoại lệ của Python. Khi chúng tôi kết hợp tất cả các lỗi mà chúng tôi đã thảo luận, chúng tôi có một giải pháp khá đơn giản để xử lý bất kỳ lỗi yêu cầu HTTP nào xảy ra theo cách của chúng tôi 00Phần kết luậnBài viết này hướng dẫn bạn về API REST của Python. Nó cung cấp kiến thức chuyên sâu về các khái niệm đằng sau mỗi bước để giúp bạn hiểu và thực hiện chúng một cách hiệu quả. Xây dựng kết nối API REST của Python theo cách thủ công và sử dụng lệnh gọi API có thể là một thách thức đặc biệt đối với người mới bắt đầu và đây là lúc Hevo tiết kiệm thời gian Ghé thăm trang web của chúng tôi để khám phá HevoHevo Data cung cấp cho người dùng một nền tảng đơn giản hơn để tích hợp dữ liệu từ hơn 100 nguồn để Phân tích. Đó là Đường ống dữ liệu không mã có thể giúp bạn kết hợp dữ liệu từ nhiều nguồn. Bạn có thể sử dụng nó để truyền dữ liệu từ nhiều nguồn dữ liệu vào Kho dữ liệu, Cơ sở dữ liệu hoặc đích bạn chọn. Nó cung cấp cho bạn một giải pháp nhất quán và đáng tin cậy để quản lý dữ liệu trong thời gian thực, đảm bảo rằng bạn luôn có dữ liệu sẵn sàng cho Phân tích ở đích mong muốn của mình Bạn muốn thử Hevo? . Bạn cũng có thể xem giá cả cạnh tranh nhất của chúng tôi sẽ giúp bạn chọn kế hoạch phù hợp với nhu cầu kinh doanh của bạn Làm cách nào để gọi API từ mã Python?Thực hiện lệnh gọi API của bạn . def get_data(bản thân, api) phản ứng = yêu cầu. nhận (f"{api}") nếu phản hồi. status_code == 200 print("lấy dữ liệu thành công") bản thân. formatted_print(phản hồi. json()) print(f"Xin chào mọi người, có {response. status_code} lỗi với yêu cầu của bạn") Làm cách nào để lấy dữ liệu từ API REST bằng Python?Các bước lấy dữ liệu từ API bằng Python . Kết nối với một API. Lúc đầu, chúng tôi cần kết nối với API và tạo kết nối an toàn như hình bên dưới–. Lấy dữ liệu từ API. . Phân tích dữ liệu thành định dạng JSON. . Trích xuất dữ liệu và in nó |