Hướng dẫn api to run python script - api để chạy tập lệnh python
Tôi có một ứng dụng python Ứng dụng.py trong máy chủ cục bộ của mình (path = user/soubhik.b/máy tính để bàn) tạo báo cáo và gửi nó cho một số máy thu nhất định. Thay vì lên lịch cho tập lệnh này trên localhost của tôi, tôi muốn tạo một API có thể được truy cập bởi các máy thu để họ sẽ nhận được thư nếu họ nhấn API bằng một ID nhất định. Với mã dưới đây, tôi có thể tạo API để hiển thị một văn bản nhất định. Nhưng, tôi phải sửa đổi điều gì để chạy tập lệnh thông qua điều này? Ngoài ra, nếu tôi muốn đặt tập lệnh vào một máy chủ thay vì localhost, làm cách nào để định cấu hình như vậy?app.py in my local server (path=Users/soubhik.b/Desktop) that generates a report and mails it to certain receivers. Instead of scheduling this script on my localhost, i want to create an API which can be accessed by the receivers such that they would get the mail if they hit the API with say a certain id. With the below code i can create an API to display a certain text. But, what do i modify to run the script through this? Also if i want to place the script in a server instead of localhost, how do i configure the same? Show
Phiên bản Python là 2.7
Đã hỏi ngày 3 tháng 9 năm 2018 lúc 5:56Sep 3, 2018 at 5:56
1 Một cách tốt để làm điều này là đặt tập lệnh vào một hàm, sau đó nhập hàm đó trong tệp API của bạn và chạy nó bằng cách sử dụng đó. Để lưu trữ trên máy chủ web, bạn có thể sử dụng Python ở bất cứ đâu nếu bạn là người mới bắt đầu Heroku cũng là một lựa chọn tốt. Đã trả lời ngày 3 tháng 9 năm 2018 lúc 6:00Sep 3, 2018 at 6:00
0 Bạn có thể làm một cái gì đó như thế này
Đã trả lời ngày 3 tháng 9 năm 2018 lúc 6:05Sep 3, 2018 at 6:05
Có một lượng dữ liệu đáng kinh ngạc có sẵn trên web. Nhiều dịch vụ web, như YouTube và GitHub, giúp dữ liệu của họ có thể truy cập được vào các ứng dụng của bên thứ ba thông qua giao diện lập trình ứng dụng (API). Một trong những cách phổ biến nhất để xây dựng API là phong cách kiến trúc còn lại. Python cung cấp một số công cụ tuyệt vời không chỉ để lấy dữ liệu từ các API REST mà còn để xây dựng API REST Python của riêng bạn.web services, like YouTube and GitHub, make their data accessible to third-party applications through an application programming interface (API). One of the most popular ways to build APIs is the REST architecture style. Python provides some great tools not only to get data from REST APIs but also to build your own Python REST APIs. Trong hướng dẫn này, bạn sẽ học:
Bằng cách sử dụng API Python và REST, bạn có thể truy xuất, phân tích, cập nhật và thao tác dữ liệu được cung cấp bởi bất kỳ dịch vụ web nào mà bạn quan tâm. Kiến trúc nghỉ ngơiREST là viết tắt của chuyển giao trạng thái đại diện và là phong cách kiến trúc phần mềm xác định một mẫu cho giao tiếp máy khách và máy chủ qua mạng. REST cung cấp một tập hợp các ràng buộc cho kiến trúc phần mềm để thúc đẩy hiệu suất, khả năng mở rộng, đơn giản và độ tin cậy trong hệ thống. stands for representational state transfer and is a software architecture style that defines a pattern for client and server communications over a network. REST provides a set of constraints for software architecture to promote performance, scalability, simplicity, and reliability in the system. REST xác định các ràng buộc kiến trúc sau:
Lưu ý, REST không phải là một đặc điểm kỹ thuật mà là một bộ hướng dẫn về cách kiến trúc sư một hệ thống phần mềm kết nối mạng. API nghỉ ngơi và dịch vụ webDịch vụ web REST là bất kỳ dịch vụ web nào tuân thủ các ràng buộc kiến trúc REST. Các dịch vụ web này đưa dữ liệu của họ ra thế giới bên ngoài thông qua API. API REST cung cấp quyền truy cập vào dữ liệu dịch vụ web thông qua các URL web công cộng.REST web service is any web service that adheres to REST architecture constraints. These web services expose their data to the outside world through an API. REST APIs provide access to web service data through public web URLs. Ví dụ, ở đây, một trong những URL cho API REST GitHub:
URL này cho phép bạn truy cập thông tin về một người dùng GitHub cụ thể. Bạn truy cập dữ liệu từ API REST bằng cách gửi yêu cầu HTTP đến URL cụ thể và xử lý phản hồi. Phương pháp HTTPREST API lắng nghe các phương thức HTTP như 5, 6 và 7 để biết hoạt động nào sẽ thực hiện trên tài nguyên dịch vụ web. Tài nguyên là bất kỳ dữ liệu nào có sẵn trong dịch vụ web có thể được truy cập và thao tác với các yêu cầu HTTP cho API REST. Phương thức HTTP cho API biết hành động nào sẽ thực hiện trên tài nguyên.resource is any data available in the web service that can be accessed and manipulated with HTTP requests
to the REST API. The HTTP method tells the API which action to perform on the resource.Mặc dù có nhiều phương thức HTTP, năm phương thức được liệt kê dưới đây là các phương thức được sử dụng phổ biến nhất với API REST:
Ứng dụng máy khách API REST có thể sử dụng năm phương thức HTTP này để quản lý trạng thái tài nguyên trong dịch vụ web. Mã trạng tháiKhi API REST nhận và xử lý yêu cầu HTTP, nó sẽ trả về phản hồi HTTP. Bao gồm trong phản hồi này là mã trạng thái HTTP. Mã này cung cấp thông tin về kết quả của yêu cầu. Một ứng dụng gửi các yêu cầu đến API có thể kiểm tra mã trạng thái và thực hiện các hành động dựa trên kết quả. Những hành động này có thể bao gồm xử lý lỗi hoặc hiển thị thông báo thành công cho người dùng.HTTP response. Included in this response is an HTTP status code. This code provides information about the results of the request. An application sending requests to the API can check the status code and perform actions based on the result. These actions could include handling errors or displaying a success message to a user. Dưới đây là danh sách các mã trạng thái phổ biến nhất được trả về bởi API REST:
Yêu cầu đã bị dị tật.
Thực thể không thể qua được Dữ liệu yêu cầu được định dạng đúng nhưng chứa dữ liệu không hợp lệ hoặc thiếu. 2endpoints.Lỗi máy chủ nội bộ
Tạo một tài nguyên mới. 0Các điểm cuối được liệt kê ở trên chỉ đại diện cho một tài nguyên trong hệ thống. API REST sẵn sàng sản xuất thường có hàng chục hoặc thậm chí hàng trăm điểm cuối khác nhau để quản lý các tài nguyên trong dịch vụ web. Nghỉ ngơi và Python: Tiêu thụ APIĐể viết mã tương tác với API REST, hầu hết các nhà phát triển Python đều chuyển sang 4 để gửi các yêu cầu HTTP. Thư viện này trừu tượng hóa sự phức tạp của việc thực hiện các yêu cầu HTTP. Nó là một trong số ít các dự án đáng đối xử như thể nó là một phần của thư viện tiêu chuẩn.Để bắt đầu sử dụng 4, bạn cần cài đặt nó trước. Bạn có thể sử dụng 15 để cài đặt nó:
Bây giờ bạn đã cài đặt 4, bạn có thể bắt đầu gửi các yêu cầu HTTP.LẤY 5 là một trong những phương pháp HTTP phổ biến nhất mà bạn sẽ sử dụng khi làm việc với API REST. Phương pháp này cho phép bạn lấy tài nguyên từ một API nhất định. 5 là một hoạt động chỉ đọc, vì vậy bạn không nên sử dụng nó để sửa đổi một tài nguyên hiện có.read-only operation, so you shouldn’t use it to modify an existing resource.Để kiểm tra 5 và các phương thức khác trong phần này, bạn sẽ sử dụng một dịch vụ có tên JsonPlaceholder. Dịch vụ miễn phí này cung cấp các điểm cuối API giả mà gửi lại phản hồi mà 4 có thể xử lý.Để thử điều này, hãy khởi động Python REPLED và chạy các lệnh sau để gửi yêu cầu 5 đến điểm cuối của JsonPlaceholder:>>>
Mã này gọi 22 để gửi yêu cầu 5 tới 24, đáp ứng với mục 25 với ID 26. Sau đó, bạn có thể gọi 27 trên đối tượng 28 để xem dữ liệu trở lại từ API.Dữ liệu phản hồi được định dạng là JSON, một kho lưu trữ giá trị khóa tương tự như từ điển Python. Nó có một định dạng dữ liệu rất phổ biến và định dạng trao đổi thực tế cho hầu hết các API REST. Ngoài việc xem dữ liệu JSON từ API, bạn cũng có thể xem những thứ khác về 28:>>>
Mã này gọi 22 để gửi yêu cầu 5 tới 24, đáp ứng với mục 25 với ID 26. Sau đó, bạn có thể gọi 27 trên đối tượng 28 để xem dữ liệu trở lại từ API.
Dữ liệu phản hồi được định dạng là JSON, một kho lưu trữ giá trị khóa tương tự như từ điển Python. Nó có một định dạng dữ liệu rất phổ biến và định dạng trao đổi thực tế cho hầu hết các API REST.Ngoài việc xem dữ liệu JSON từ API, bạn cũng có thể xem những thứ khác về 28:
Tại đây, bạn truy cập 30 để xem mã trạng thái HTTP. Bạn cũng có thể xem các tiêu đề phản hồi HTTP HTTP với 31. Từ điển này chứa siêu dữ liệu về phản hồi, chẳng hạn như 32 của phản hồi.>>>
Mã này gọi 22 để gửi yêu cầu 5 tới 24, đáp ứng với mục 25 với ID 26. Sau đó, bạn có thể gọi 27 trên đối tượng 28 để xem dữ liệu trở lại từ API.Dữ liệu phản hồi được định dạng là JSON, một kho lưu trữ giá trị khóa tương tự như từ điển Python. Nó có một định dạng dữ liệu rất phổ biến và định dạng trao đổi thực tế cho hầu hết các API REST. Ngoài việc xem dữ liệu JSON từ API, bạn cũng có thể xem những thứ khác về 28:>>>
Mã này gọi 22 để gửi yêu cầu 5 tới 24, đáp ứng với mục 25 với ID 26. Sau đó, bạn có thể gọi 27 trên đối tượng 28 để xem dữ liệu trở lại từ API.Dữ liệu phản hồi được định dạng là JSON, một kho lưu trữ giá trị khóa tương tự như từ điển Python. Nó có một định dạng dữ liệu rất phổ biến và định dạng trao đổi thực tế cho hầu hết các API REST. Ngoài việc xem dữ liệu JSON từ API, bạn cũng có thể xem những thứ khác về 28:Tại đây, bạn truy cập 30 để xem mã trạng thái HTTP. Bạn cũng có thể xem các tiêu đề phản hồi HTTP HTTP với 31. Từ điển này chứa siêu dữ liệu về phản hồi, chẳng hạn như 32 của phản hồi.BƯU KIỆNBây giờ, hãy xem cách bạn sử dụng dữ liệu 4 đến 6 cho API REST để tạo tài nguyên mới. Bạn sẽ sử dụng lại JsonPlaceholder, nhưng lần này bạn sẽ đưa dữ liệu JSON vào yêu cầu. Tại đây, dữ liệu mà bạn sẽ gửi:JSON này chứa thông tin cho một mục 25 mới. Quay lại Python REPLE, hãy chạy mã sau để tạo 25 mới:>>>
Mã này gọi 22 để gửi yêu cầu 5 tới 24, đáp ứng với mục 25 với ID 26. Sau đó, bạn có thể gọi 27 trên đối tượng 28 để xem dữ liệu trở lại từ API.VÁTiếp theo, bạn sẽ sử dụng 83 để sửa đổi giá trị của một trường cụ thể trên 25 hiện có. 1 khác với 0 ở chỗ nó không thay thế hoàn toàn tài nguyên hiện có. Nó chỉ sửa đổi các giá trị được đặt trong JSON được gửi với yêu cầu.Bạn sẽ sử dụng cùng một 25 từ ví dụ cuối cùng để thử 83. Đây là các giá trị hiện tại: 0Bây giờ bạn có thể cập nhật 89 với giá trị mới:>>> 1
Khi bạn gọi 61, bạn có thể thấy rằng 89 đã được cập nhật lên 92.XÓA BỎCuối cùng nhưng không kém phần quan trọng, nếu bạn muốn loại bỏ hoàn toàn tài nguyên, thì bạn sử dụng 7. Tại đây, mã để xóa 25:>>> 2Khi bạn gọi 61, bạn có thể thấy rằng 89 đã được cập nhật lên 92.XÓA BỎ Cuối cùng nhưng không kém phần quan trọng, nếu bạn muốn loại bỏ hoàn toàn tài nguyên, thì bạn sử dụng >>> import requests >>> api_url = "https://jsonplaceholder.typicode.com/todos" >>> todo = {"userId": 1, "title": "Buy milk", "completed": False} >>> response = requests.post(api_url, json=todo) >>> response.json() {'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201} >>> response.status_code 201 7. Tại đây, mã để xóa from flask import Flask from flask_restful import Resource, Api app = Flask(__name__) api = Api(app) class ExecuteScript: def printScript: return "Hello World" api.add_resource(ExecuteScript, '/printScript') if __name__ == '__main__': app.run(debug=True) 25:Bạn gọi 95 với URL API chứa ID cho 25 bạn muốn xóa. Điều này gửi yêu cầu 7 đến API REST, sau đó xóa tài nguyên phù hợp. Sau khi xóa tài nguyên, API sẽ gửi lại một đối tượng JSON trống cho biết tài nguyên đã bị xóa.Thư viện >>> import requests >>> api_url = "https://jsonplaceholder.typicode.com/todos" >>> todo = {"userId": 1, "title": "Buy milk", "completed": False} >>> response = requests.post(api_url, json=todo) >>> response.json() {'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201} >>> response.status_code 201 4 là một công cụ tuyệt vời để làm việc với API REST và một phần không thể thiếu trong vành đai công cụ Python của bạn. Trong phần tiếp theo, bạn sẽ thay đổi bánh răng và xem xét những gì cần thiết để xây dựng API REST.Nghỉ ngơi và Python: Xây dựng API Thiết kế API REST là một chủ đề lớn với nhiều lớp. Như với hầu hết mọi thứ trong công nghệ, có một loạt các ý kiến về cách tiếp cận tốt nhất để xây dựng API. Trong phần này, bạn sẽ xem xét một số bước được đề xuất để theo dõi khi bạn xây dựng API. Xác định tài nguyênBước đầu tiên bạn sẽ thực hiện khi bạn xây dựng API REST là xác định các tài nguyên mà API sẽ quản lý. Nó phổ biến để mô tả các tài nguyên này dưới dạng danh từ số nhiều, như 7, 00 hoặc 01. 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ẽ xây dựng danh sách các danh từ mô tả các dữ liệu khác nhau mà người dùng có thể quản lý trong API.
5 08
5 08Nhận một danh sách các giao dịch. 10Nhận một giao dịch duy nhất. 6Tạo một giao dịch mới. 3 0elements to encode data. Each element has an opening and closing tag, with the data in between. Elements can be nested inside other elements. You can see this above, where several 40 tags are nested inside of 41.Bây giờ, hãy xem cùng một 39 trong JSON: 4JSON lưu trữ dữ liệu trong các cặp giá trị khóa tương tự như từ điển Python. Giống như XML, JSON hỗ trợ dữ liệu làm tổ ở bất kỳ cấp độ nào, vì vậy bạn có thể mô hình hóa dữ liệu phức tạp. Cả JSON và XML đều không tốt hơn so với người khác, nhưng có một ưu tiên cho JSON trong số các nhà phát triển API REST. Điều này đặc biệt đúng khi bạn ghép API REST với khung phía trước như React hoặc Vue. Thiết kế phản ứng thành côngKhi bạn đã chọn định dạng dữ liệu, bước tiếp theo là quyết định cách bạn sẽ trả lời các yêu cầu HTTP. Tất cả các phản hồi từ API REST của bạn sẽ có định dạng tương tự và bao gồm mã trạng thái HTTP thích hợp. Trong phần này, bạn sẽ xem xét một số câu trả lời HTTP ví dụ cho API giả thuyết quản lý hàng tồn kho của 43. Những ví dụ này sẽ cho bạn cảm giác về cách bạn nên định dạng các phản hồi API của bạn. Để làm cho mọi thứ rõ ràng, bạn sẽ xem xét các yêu cầu và phản hồi HTTP RAW thay vì sử dụng thư viện HTTP như 4.Để bắt đầu mọi thứ, hãy xem yêu cầu 5 đến 46, trả về danh sách 43: 5Yêu cầu HTTP này được tạo thành từ bốn phần:
Bốn phần này là tất cả những gì bạn cần để gửi yêu cầu 5 đến 46. Bây giờ hãy xem phản hồi. API này sử dụng JSON làm định dạng trao đổi dữ liệu: 6API trả về một phản hồi chứa danh sách 43. Bạn biết rằng phản hồi đã thành công vì mã trạng thái 55. Phản hồi cũng có tiêu đề 32 được đặt thành 44. Điều này cho người dùng phân tích cú pháp phản hồi là JSON.Điều quan trọng là luôn luôn đặt tiêu đề 32 chính xác trên phản hồi của bạn. Nếu bạn gửi JSON, thì hãy đặt 32 thành 44. Nếu XML, thì hãy đặt nó thành 61. Tiêu đề này cho người dùng biết họ nên phân tích dữ liệu như thế nào.Bạn cũng muốn bao gồm một mã trạng thái thích hợp trong phản hồi của bạn. Đối với bất kỳ yêu cầu 5 thành công nào, bạn nên trả lại 55. Điều này cho người dùng biết rằng yêu cầu của họ đã được xử lý như mong đợi.Hãy xem một yêu cầu 5 khác, lần này là cho một chiếc xe duy nhất: 7Yêu cầu HTTP này truy vấn API cho xe 26. Ở đây, câu trả lời: 8Phản hồi này chứa một đối tượng JSON duy nhất với dữ liệu xe hơi. Vì nó là một đối tượng duy nhất, nên nó không cần phải được gói trong danh sách. Giống như phản hồi cuối cùng, điều này cũng có mã trạng thái 55.Tiếp theo, hãy xem yêu cầu 6 để thêm một chiếc xe mới: 9Yêu cầu 6 này bao gồm JSON cho chiếc xe mới trong yêu cầu. Nó đặt tiêu đề 32 thành 44 để API biết loại nội dung của yêu cầu. API sẽ tạo ra một chiếc xe mới từ JSON.Ở đây, câu trả lời: 0Phản hồi này có mã trạng thái 71 để nói với người dùng rằng tài nguyên mới đã được tạo. Đảm bảo sử dụng 71 thay vì 55 cho tất cả các yêu cầu 6 thành công.Phản hồi này cũng bao gồm một bản sao của chiếc xe mới với 62 được tạo bởi API. Điều quan trọng là phải gửi lại một 62 trong phản hồi để người dùng có thể sửa đổi tài nguyên một lần nữa.Bây giờ hãy xem một yêu cầu 0: 1Yêu cầu này sử dụng 62 từ yêu cầu trước đó để cập nhật chiếc xe với tất cả dữ liệu mới. Nhắc nhở, 0 cập nhật tất cả các trường trên tài nguyên với dữ liệu mới. Ở đây, câu trả lời: 2Phản hồi bao gồm một bản sao của 80 với dữ liệu mới. Một lần nữa, bạn luôn muốn gửi lại tài nguyên đầy đủ cho yêu cầu 0. Điều tương tự cũng áp dụng cho yêu cầu 1: 3 1 yêu cầu chỉ cập nhật một phần của tài nguyên. Theo yêu cầu ở trên, các trường 84 và 85 sẽ được cập nhật với các giá trị mới. Ở đây, câu trả lời: 4Phản hồi chứa một bản sao đầy đủ của 80. Như bạn có thể thấy, chỉ các trường 84 và 85 đã được cập nhật.Cuối cùng, hãy xem API REST của bạn sẽ phản hồi như thế nào khi nhận được yêu cầu 7. Tại đây, một yêu cầu 7 để xóa 80:Yêu cầu 7 này cho API xóa 80 bằng ID 94. Ở đây, câu trả lời:Phản hồi này chỉ bao gồm mã trạng thái 95. Mã trạng thái này cho người dùng biết rằng hoạt động đã thành công, nhưng không có nội dung nào được trả lại trong phản hồi. Điều này có ý nghĩa vì 80 đã bị xóa. Không có lý do gì để gửi một bản sao của nó trong phản hồi.Các câu trả lời ở trên hoạt động tốt khi mọi thứ diễn ra theo kế hoạch, nhưng điều gì xảy ra nếu có vấn đề với yêu cầu? Trong phần tiếp theo, bạn sẽ xem xét cách API REST của bạn trả lời khi xảy ra lỗi. Thiết kế phản hồi lỗiLuôn luôn có một cơ hội yêu cầu API REST của bạn có thể thất bại. Đó là một ý tưởng tốt để xác định phản hồi lỗi sẽ như thế nào. Những phản hồi này nên bao gồm một mô tả về những gì lỗi xảy ra cùng với mã trạng thái thích hợp. Trong phần này, bạn sẽ xem xét một vài ví dụ. Để bắt đầu, hãy xem yêu cầu tài nguyên không tồn tại trong API: 5Tại đây, người dùng gửi yêu cầu 5 đến 98, không tồn tại. API gửi lại phản hồi sau: 6Phản hồi này bao gồm mã trạng thái 99. Cùng với điều này, phản hồi chứa một đối tượng JSON với thông báo lỗi mô tả. Cung cấp thông báo lỗi mô tả cung cấp cho người dùng nhiều bối cảnh hơn cho lỗi.Bây giờ hãy xem phản hồi lỗi khi người dùng gửi yêu cầu không hợp lệ: 7Yêu cầu 6 này chứa JSON, nhưng nó không được định dạng chính xác. Nó thiếu một nẹp xoăn đóng ( 01) ở cuối. API giành chiến thắng có thể xử lý dữ liệu này. Phản hồi lỗi cho người dùng biết về vấn đề: 8Phản hồi này bao gồm thông báo lỗi mô tả cùng với mã trạng thái 02, nói với người dùng rằng họ cần sửa chữa yêu cầu.Có một số cách khác mà yêu cầu có thể sai ngay cả khi nó được định dạng đúng. Trong ví dụ tiếp theo này, người dùng gửi yêu cầu 6 nhưng bao gồm một loại phương tiện không được hỗ trợ: 9Trong yêu cầu này, người dùng gửi XML, nhưng API chỉ hỗ trợ JSON. API trả lời với điều này: 0Phản hồi này bao gồm mã trạng thái 04 để chỉ ra rằng yêu cầu 6 bao gồm một định dạng dữ liệu được API hỗ trợ. Mã lỗi này có ý nghĩa đối với dữ liệu mà ở định dạng sai, nhưng những gì về dữ liệu mà không hợp lệ ngay cả với định dạng chính xác thì sao?Trong ví dụ tiếp theo này, người dùng gửi yêu cầu 6 nhưng bao gồm dữ liệu 80 không phù hợp với các trường của dữ liệu khác: 1Trong yêu cầu này, người dùng thêm các trường 08 và 09 vào JSON. Các trường này không được hỗ trợ bởi API, vì vậy nó trả lời bằng một thông báo lỗi: 2Phản hồi này bao gồm mã trạng thái 10. Mã trạng thái này chỉ ra rằng có bất kỳ vấn đề nào với yêu cầu, nhưng dữ liệu không hợp lệ. API REST cần xác thực dữ liệu đến. Nếu người dùng gửi dữ liệu với yêu cầu, thì API sẽ xác thực dữ liệu và thông báo cho người dùng về bất kỳ lỗi nào.Trả lời các yêu cầu, cả thành công và sai lầm, là một trong những công việc quan trọng nhất của API REST. Nếu API của bạn trực quan và cung cấp các phản hồi chính xác, thì người dùng sẽ dễ dàng xây dựng các ứng dụng xung quanh dịch vụ web của bạn. May mắn thay, một số khung web Python tuyệt vời trừu tượng hóa sự phức tạp của việc xử lý các yêu cầu HTTP và trả lời trả lại. Bạn sẽ xem xét ba tùy chọn phổ biến trong phần tiếp theo. Nghỉ ngơi và Python: Công cụ giao dịchTrong phần này, bạn sẽ xem xét ba khung hình phổ biến để xây dựng các API REST trong Python. Mỗi khung có ưu và nhược điểm, vì vậy bạn sẽ phải đánh giá loại nào phù hợp nhất cho nhu cầu của bạn. Cuối cùng, trong các phần tiếp theo, bạn sẽ xem xét API REST trong mỗi khung. Tất cả các ví dụ sẽ dành cho một API tương tự quản lý một tập hợp các quốc gia. Mỗi quốc gia sẽ có các lĩnh vực sau:
Các trường 11, 12 và 13 lưu trữ dữ liệu về một quốc gia cụ thể ở đâu đó trên thế giới.Hầu hết thời gian, dữ liệu được gửi từ API REST đến từ cơ sở dữ liệu. Kết nối với cơ sở dữ liệu nằm ngoài phạm vi của hướng dẫn này. Đối với các ví dụ dưới đây, bạn sẽ lưu trữ dữ liệu của mình trong danh sách Python. Ngoại lệ cho điều này là ví dụ về khung REST Django, chạy khỏi cơ sở dữ liệu SQLite mà Django tạo ra. Để giữ cho mọi thứ nhất quán, bạn sẽ sử dụng 17 làm điểm cuối chính của bạn cho cả ba khung. Bạn cũng sẽ sử dụng JSON làm định dạng dữ liệu của bạn cho cả ba khung.
Bây giờ bạn đã có nền cho API, bạn có thể chuyển sang phần tiếp theo, nơi bạn sẽ nhìn vào API còn lại trong bình.Flask. Bình giữ nhiệtFlask là một microframework Python được sử dụng để xây dựng các ứng dụng web và API REST. Flask cung cấp một xương sống vững chắc cho các ứng dụng của bạn trong khi để lại nhiều lựa chọn thiết kế tùy thuộc vào bạn. Công việc chính của Flask Flask là xử lý các yêu cầu HTTP và định tuyến chúng đến chức năng thích hợp trong ứng dụng. Dưới đây là một ứng dụng bình ví dụ cho API REST: 3Ứng dụng này xác định điểm cuối API 18 để quản lý danh sách các quốc gia. Nó xử lý hai loại yêu cầu khác nhau:
Bạn có thể dùng thử ứng dụng này bằng cách cài đặt 23 với 15: 4Khi 23 được cài đặt, hãy lưu mã trong một tệp có tên 26. Để chạy ứng dụng bình này, trước tiên bạn cần đặt một biến môi trường được gọi là 27 thành 26. Điều này cho Flask tập tin chứa ứng dụng của bạn.Chạy lệnh sau bên trong thư mục chứa 26: 5Điều này đặt 27 thành 26 trong vỏ hiện tại. Tùy chọn, bạn có thể đặt 32 thành 33, đặt bình ở chế độ gỡ lỗi:debug mode: 6Bên cạnh việc cung cấp thông báo lỗi hữu ích, chế độ gỡ lỗi sẽ kích hoạt tải lại ứng dụng sau khi tất cả các thay đổi mã. Không có chế độ gỡ lỗi, bạn phải khởi động lại máy chủ sau mỗi lần thay đổi. Với tất cả các biến môi trường đã sẵn sàng, giờ đây bạn có thể khởi động máy chủ phát triển Flask bằng cách gọi 34: 7Điều này bắt đầu một máy chủ chạy ứng dụng. Mở trình duyệt của bạn và truy cập 35 và bạn sẽ thấy phản hồi sau: 8Phản hồi JSON này chứa ba 17 được xác định vào đầu 26. Hãy xem mã sau để xem cách thức hoạt động của nó: 9Mã này sử dụng 38, một công cụ trang trí tuyến đường, để kết nối 5 yêu cầu với một chức năng trong ứng dụng. Khi bạn truy cập 18, Flask gọi chức năng được trang trí để xử lý yêu cầu HTTP và trả về phản hồi.Trong mã trên, 41 lấy 17, đây là danh sách Python và chuyển đổi nó thành JSON với 43. JSON này được trả lại trong phản hồi.Bây giờ hãy xem 44. Chức năng này xử lý 6 yêu cầu đến 18 và cho phép bạn thêm một quốc gia mới vào danh sách. Nó sử dụng đối tượng Flask 47 để nhận thông tin về yêu cầu HTTP hiện tại: 0Hàm này thực hiện các hoạt động sau:
44 cũng gọi 59 để xác định 62 cho 22 mới: 1Hàm trợ giúp này sử dụng biểu thức máy phát để chọn tất cả ID quốc gia và sau đó gọi 62 trên chúng để có được giá trị lớn nhất. Nó tăng giá trị này bởi 26 để sử dụng ID tiếp theo.Bạn có thể thử điểm cuối này trong shell bằng Curl công cụ dòng lệnh, cho phép bạn gửi các yêu cầu HTTP từ dòng lệnh. Tại đây, bạn sẽ thêm một 22 mới vào danh sách 17: 2Lệnh Curl này có một số tùy chọn hữu ích để biết:
Với các tùy chọn này được đặt, Curl sẽ gửi dữ liệu JSON theo yêu cầu 6 với tiêu đề 32 được đặt thành 44. API REST trả về 72 cùng với JSON cho 22 mới mà bạn đã thêm.Bạn có thể sử dụng Curl để gửi yêu cầu 5 đến 18 để xác nhận rằng 22 mới đã được thêm vào. Nếu bạn không sử dụng 66 trong lệnh Curl của mình, thì nó sẽ gửi yêu cầu 5 theo mặc định: 3Điều này trả về danh sách đầy đủ các quốc gia trong hệ thống, với quốc gia mới nhất ở phía dưới. Đây chỉ là một mẫu của những gì bình có thể làm. Ứng dụng này có thể được mở rộng để bao gồm các điểm cuối cho tất cả các phương pháp HTTP khác. Flask cũng có một hệ sinh thái lớn của các phần mở rộng cung cấp chức năng bổ sung cho API REST, chẳng hạn như tích hợp cơ sở dữ liệu, xác thực và xử lý nền. Khung nghỉ ngơi DjangoMột lựa chọn phổ biến khác để xây dựng API REST là Django Rest Framework. Django REST Framework là một plugin Django bổ sung chức năng API REST trên đầu một dự án Django hiện có. Để sử dụng Framework Django Rest, bạn cần một dự án Django để làm việc. Nếu bạn đã có một, thì bạn có thể áp dụng các mẫu trong phần cho dự án của mình. Nếu không, hãy theo dõi và bạn sẽ xây dựng một dự án Django và thêm vào khung Rest Django. Đầu tiên, cài đặt 79 và 80 với 15: 4Điều này cài đặt 79 và 80. Bây giờ bạn có thể sử dụng công cụ 84 để tạo dự án Django mới. Chạy lệnh sau để bắt đầu dự án của bạn: 5Lệnh này tạo một thư mục mới trong thư mục hiện tại của bạn có tên là 85. Bên trong thư mục này là tất cả các tệp bạn cần để chạy dự án Django của bạn. Tiếp theo, bạn sẽ tạo ra một ứng dụng Django mới trong dự án của bạn. Django chia nhỏ chức năng của một dự án thành các ứng dụng. Mỗi ứng dụng quản lý một phần riêng biệt của dự án.Django application inside your project. Django breaks up the functionality of a project into applications. Each application manages a distinct part of the project.Để tạo ứng dụng, thay đổi các thư mục thành 85 và chạy lệnh sau: 6Điều này tạo ra một thư mục 17 mới trong dự án của bạn. Bên trong thư mục này là các tệp cơ sở cho ứng dụng này.Bây giờ bạn đã tạo ra một ứng dụng để làm việc, bạn cần nói với Django về nó. Bên cạnh thư mục 17 mà bạn vừa tạo là một thư mục khác có tên là 85. Thư mục này chứa các cấu hình và cài đặt cho dự án của bạn.Mở tệp 90 mà bên trong thư mục 85. Thêm các dòng sau vào 92 để kể Django về ứng dụng 17 và khung REST Django: 7Bạn đã thêm một dòng cho ứng dụng 17 và 95.Bạn có thể tự hỏi tại sao bạn cần thêm 95 vào danh sách ứng dụng. Bạn cần thêm nó vì Framework Django Rest chỉ là một ứng dụng Django khác. Các plugin Django là các ứng dụng Django được đóng gói và phân phối và bất cứ ai cũng có thể sử dụng.Bước tiếp theo là tạo mô hình Django để xác định các trường dữ liệu của bạn. Bên trong ứng dụng 17, Cập nhật 98 với mã sau: 8Mã này xác định mô hình 99. Django sẽ sử dụng mô hình này để tạo bảng và cột cơ sở dữ liệu cho dữ liệu quốc gia.Chạy các lệnh sau để cập nhật cơ sở dữ liệu Django dựa trên mô hình này: 9Các lệnh này sử dụng di chuyển Django để tạo một bảng mới trong cơ sở dữ liệu. Bảng này bắt đầu trống, nhưng thật tuyệt khi có một số dữ liệu ban đầu để bạn có thể kiểm tra khung Rest Django. Để làm điều này, bạn sẽ sử dụng một bộ đồ Django để tải một số dữ liệu trong cơ sở dữ liệu. Sao chép và lưu dữ liệu JSON sau vào một tệp có tên 00 và lưu nó bên trong thư mục 17: 0JSON này chứa các mục cơ sở dữ liệu cho ba quốc gia. Gọi lệnh sau để tải dữ liệu này trong cơ sở dữ liệu: 1Điều này thêm ba hàng vào cơ sở dữ liệu. Với điều đó, ứng dụng Django của bạn được thiết lập và điền với một số dữ liệu. Bây giờ bạn có thể bắt đầu thêm Framework Django Rest vào dự án. Django Rest Framework lấy một mô hình Django hiện có và chuyển đổi nó thành JSON cho API REST. Nó làm điều này với các serializer mô hình. Một bộ tuần tự mô hình cho Django REST Framework cách chuyển đổi một thể hiện mô hình thành JSON và dữ liệu nào sẽ bao gồm.model serializers. A model serializer tells Django REST framework how to convert a model instance into JSON and what data to include. Bạn có thể tạo bộ tuần tự của mình cho mô hình 99 từ trên cao. Bắt đầu bằng cách tạo một tệp có tên 03 bên trong ứng dụng 17. Sau khi bạn thực hiện điều đó, hãy thêm mã sau vào 03: 2Bộ tuần tự này, 06, các lớp con 07 để tự động tạo nội dung JSON dựa trên các trường mô hình của 99. Trừ khi được chỉ định, một lớp con 09 sẽ bao gồm tất cả các trường từ mô hình Django trong JSON. Bạn có thể sửa đổi hành vi này bằng cách đặt 10 thành danh sách dữ liệu bạn muốn bao gồm.Giống như Django, Django Rest Framework sử dụng các chế độ xem để truy vấn dữ liệu từ cơ sở dữ liệu để hiển thị cho người dùng. Thay vì viết các chế độ xem API REST từ đầu, bạn có thể phân lớp Django REST Framework, lớp 11, có chế độ xem mặc định cho các hoạt động API REST phổ biến.Dưới đây, một danh sách các hành động mà 11 cung cấp và các phương thức HTTP tương đương của chúng:
24Xóa một quốc gia. 3Như bạn có thể thấy, những hành động này ánh xạ theo các phương thức HTTP tiêu chuẩn mà bạn mong đợi trong API REST. Bạn có thể ghi đè các hành động này trong lớp con của mình hoặc thêm các hành động bổ sung dựa trên các yêu cầu của API của bạn. Khi các chế độ xem được tạo, chúng cần được ánh xạ tới các URL hoặc điểm cuối thích hợp. Để làm điều này, Django Rest Framework cung cấp một 34 sẽ tự động tạo URL cho 11.Tạo tệp 36 trong ứng dụng 17 và thêm mã sau vào tệp: 4Mã này tạo ra 34 và đăng ký 26 theo URL 17. Điều này sẽ đặt tất cả các URL cho 26 theo 42.Cuối cùng, bạn cần cập nhật tệp cơ sở dự án 36 để bao gồm tất cả các URL 17 trong dự án. Cập nhật tệp 36 bên trong thư mục 85 với mã sau: 5Điều này đặt tất cả các URL theo 42. Bây giờ bạn đã sẵn sàng để thử API REST được hỗ trợ Django của bạn. Chạy lệnh sau trong thư mục root 85 để khởi động máy chủ phát triển Django: 6Máy chủ phát triển hiện đang chạy. Đi trước và gửi yêu cầu 5 tới 42 để lấy danh sách tất cả các quốc gia trong dự án Django của bạn: 7Django Rest Framework gửi lại phản hồi JSON với ba quốc gia bạn đã thêm trước đó. Phản hồi ở trên được định dạng cho khả năng đọc, vì vậy phản hồi của bạn sẽ trông khác nhau. 34 bạn đã tạo trong 52 cung cấp URL cho các yêu cầu cho tất cả các điểm cuối API tiêu chuẩn:
Bạn có thể thử thêm một vài điểm cuối dưới đây. Gửi yêu cầu 6 tới 42 để tạo 99 mới trong dự án Django của bạn: 8Điều này tạo ra một 99 mới với JSON mà bạn đã gửi trong yêu cầu. Django REST Framework trả về mã trạng thái 71 và 99 mới.Bạn có thể xem 99 hiện có bằng cách gửi yêu cầu đến 54 với 62 hiện có. Chạy lệnh sau để nhận 99 đầu tiên: 9Phản hồi chứa thông tin cho 99 đầu tiên. Những ví dụ này chỉ đề cập đến các yêu cầu 5 và 6. Vui lòng thử các yêu cầu 0, 1 và 7 để xem cách bạn có thể quản lý đầy đủ mô hình của mình từ API còn lại.Như bạn đã thấy, Django Rest Framework là một lựa chọn tuyệt vời để xây dựng API REST, đặc biệt nếu bạn có dự án Django hiện có và bạn muốn thêm API. FastapiFastapi là một khung web Python mà Tối ưu hóa cho việc xây dựng API. Nó sử dụng gợi ý loại Python và có hỗ trợ tích hợp cho các hoạt động Async. Fastapi được xây dựng trên đỉnh của Star Muff và Pydantic và rất hiệu suất. Dưới đây là một ví dụ về API còn lại được xây dựng với Fastapi: 0Ứng dụng này sử dụng các tính năng của Fastapi để xây dựng API REST cho cùng một dữ liệu 22 mà bạn đã thấy trong các ví dụ khác.Bạn có thể thử ứng dụng này bằng cách cài đặt 76 với 15: 1Bạn cũng sẽ cần cài đặt 78, một máy chủ có thể chạy các ứng dụng Fastapi: 2Nếu bạn đã cài đặt cả 76 và 80, thì hãy lưu mã ở trên trong một tệp có tên 26. Chạy lệnh sau để khởi động máy chủ phát triển: 3Máy chủ hiện đang chạy. Mở một trình duyệt và truy cập 82. Bạn sẽ thấy Fastapi trả lời với điều này: 4Fastapi trả lời với một mảng JSON chứa danh sách 17. Bạn cũng có thể thêm một quốc gia mới bằng cách gửi yêu cầu 6 đến 18: 5Bạn đã thêm một quốc gia mới. Bạn có thể xác nhận điều này với 19: 6Fastapi trả lại một danh sách JSON bao gồm cả quốc gia mới mà bạn vừa thêm vào. Bạn có thể nhận thấy rằng ứng dụng Fastapi trông tương tự như ứng dụng Flask. Giống như Flask, Fastapi có một bộ tính năng tập trung. Nó không cố gắng xử lý tất cả các khía cạnh của phát triển ứng dụng web. Nó được thiết kế để xây dựng API với các tính năng Python hiện đại. Nếu bạn nhìn gần đỉnh 26, thì bạn sẽ thấy một lớp gọi là 99 kéo dài 89. Lớp 99 mô tả cấu trúc của dữ liệu trong API còn lại: 7Đây là một ví dụ về mô hình Pydantic. Các mô hình Pydantic cung cấp một số tính năng hữu ích trong Fastapi. Họ sử dụng các chú thích loại Python để thực thi loại dữ liệu cho từng trường trong lớp. Điều này cho phép Fastapi tự động tạo JSON, với các loại dữ liệu chính xác, cho các điểm cuối API. Nó cũng cho phép Fastapi xác nhận JSON đến. Nó rất hữu ích để làm nổi bật dòng đầu tiên vì có rất nhiều thứ đang diễn ra ở đó: 8Trong dòng này, bạn thấy 91, lưu trữ một số nguyên cho ID của 99. Nó sử dụng hàm 93 từ Pydantic để sửa đổi hành vi của 91. Trong ví dụ này, bạn đã vượt qua 93 Các đối số từ khóa 96 và 97.Đối số đầu tiên, 96, được đặt thành 59. Đối số này chỉ định một hàm để chạy bất cứ khi nào 99 mới được tạo. Giá trị trả về sẽ được gán cho 91.Đối số thứ hai, 97, được đặt thành 62. Điều này cho Fastapi xuất ra khóa 04 thay vì 05 trong JSON: 9Điều này 97 cũng có nghĩa là bạn có thể sử dụng 62 khi bạn tạo một 99 mới. Bạn có thể thấy điều này trong danh sách 17: 0Danh sách này chứa ba trường hợp 99 cho các quốc gia ban đầu trong API. Các mô hình Pydantic cung cấp một số tính năng tuyệt vời và cho phép Fastapi dễ dàng xử lý dữ liệu JSON.Bây giờ hãy xem hai chức năng API trong ứng dụng này. Đầu tiên, 41, trả về danh sách 17 cho các yêu cầu 5 cho 18: 1Fastapi sẽ tự động tạo JSON dựa trên các trường trong mô hình Pydantic và đặt đúng loại dữ liệu JSON từ các gợi ý loại Python. Mô hình Pydantic cũng cung cấp một lợi ích khi bạn thực hiện yêu cầu 6 cho 18. Bạn có thể thấy trong hàm API thứ hai bên dưới rằng tham số 22 có chú thích 99: 2Chú thích loại này bảo Fastapi xác nhận JSON đến với 99. Nếu nó không khớp, thì Fastapi sẽ trả về lỗi. Bạn có thể thử điều này bằng cách đưa ra yêu cầu với JSON không phù hợp với mô hình Pydantic: 3JSON trong yêu cầu này bị thiếu giá trị cho 13, vì vậy Fastapi đã trả lại phản hồi với mã trạng thái 10 cũng như chi tiết về lỗi. Xác nhận này được thực hiện bởi mô hình Pydantic.Ví dụ này chỉ làm trầy xước bề mặt của những gì Fastapi có thể làm. Với hiệu suất cao và các tính năng hiện đại như các chức năng 22 và tài liệu tự động, Fastapi đáng để xem xét cho API REST tiếp theo của bạn.Sự kết luậnAPI nghỉ ngơi ở khắp mọi nơi. Biết cách tận dụng Python để tiêu thụ và xây dựng API cho phép bạn làm việc với số lượng lớn dữ liệu mà dịch vụ web cung cấp. Trong hướng dẫn này, bạn đã học được cách::
Sử dụng các kỹ năng API Python REST mới của bạn, bạn sẽ không chỉ có thể tương tác với các dịch vụ web mà còn xây dựng API REST cho các ứng dụng của bạn. Các công cụ này mở ra cánh cửa cho một loạt các ứng dụng và dịch vụ thú vị, dựa trên dữ liệu. Bạn có thể sử dụng Python với API không?Quá trình thực hiện các yêu cầu cho API với Python thực sự rất đơn giản, bạn chỉ cần biết API bạn muốn giao tiếp. Trong Python, bạn chỉ cần một dòng mã duy nhất để thực hiện cuộc gọi API cơ bản, điều này được thực hiện với hàm yêu cầu get ().. In Python you only need a single line of code to make a basic API call, this is done with the get() request function.
API tốt nhất cho Python là gì?Top 15 khung API Rest Rest vào năm 2022.. Requests.. Nhanh hơn yêu cầu .. PycURL.. Flask.. Tornado.. FastAPI.. Sanic.. Falcon.. API cho Python là gì?API là viết tắt của giao diện lập trình ứng dụng.Về bản chất, một API hoạt động như một lớp giao tiếp hoặc như tên nói, một giao diện, cho phép các hệ thống khác nhau nói chuyện với nhau mà không phải hiểu chính xác những gì nhau làm.API có thể có nhiều hình thức hoặc hình dạng.application programming interface. In essence, an API acts as a communication layer, or as the name says, an interface, that allows different systems to talk to each other without having to understand exactly what each other does. APIs can come in many forms or shapes.
Làm thế nào để Python tích hợp với API?Danh sách kiểm tra học tập tích hợp API.. Chọn một API được biết đến với tài liệu hàng đầu..... Đọc tài liệu API cho API đã chọn của bạn..... Trước khi bạn bắt đầu viết bất kỳ mã nào, hãy chơi xung quanh với API thông qua dòng lệnh với Curl hoặc trong trình duyệt với Postman..... Đánh giá xem có nên sử dụng thư viện trợ giúp hay làm việc với các yêu cầu .. |