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
from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return ("hello world")


if __name__ == '__main__':
    app.run(debug=True)

Phiên bản Python là 2.7

Hướng dẫn api to run python script - api để chạy tập lệnh python

Đã 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

Hướng dẫn api to run python script - api để chạy tập lệnh python

0

Bạn có thể làm một cái gì đó như thế này

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)

Đã trả lời ngày 3 tháng 9 năm 2018 lúc 6:05Sep 3, 2018 at 6:05

Hướng dẫn api to run python script - api để chạy tập lệnh python

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:

  • Kiến trúc nghỉ ngơi là gìREST architecture is
  • Cách các API REST cung cấp quyền truy cập vào dữ liệu webREST APIs provide access to web data
  • Cách sử dụng dữ liệu từ API REST bằng 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
    >>> 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
    library
  • Những bước nào cần thực hiện để xây dựng API RESTbuild a REST API
  • Một số công cụ Python phổ biến là gì để xây dựng API RESTPython tools are for building REST APIs

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ơi

REST 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:

  • Không quốc tịch: Máy chủ giành được duy trì bất kỳ trạng thái nào giữa các yêu cầu từ máy khách. The server won’t maintain any state between requests from the client.
  • Máy khách-máy chủ: Máy khách và máy chủ phải được tách rời nhau, cho phép mỗi người phát triển độc lập. The client and server must be decoupled from each other, allowing each to develop independently.
  • Có thể lưu trữ: Dữ liệu được lấy từ máy chủ phải được lưu trữ bởi máy khách hoặc máy chủ. The data retrieved from the server should be cacheable either by the client or by the server.
  • Giao diện thống nhất: Máy chủ sẽ cung cấp giao diện thống nhất để truy cập tài nguyên mà không cần xác định đại diện của chúng. The server will provide a uniform interface for accessing resources without defining their representation.
  • Hệ thống xếp lớp: Máy khách có thể truy cập các tài nguyên trên máy chủ một cách gián tiếp thông qua các lớp khác như proxy hoặc cân bằng tải. The client may access the resources on the server indirectly through other layers such as a proxy or load balancer.
  • Mã theo yêu cầu (tùy chọn): Máy chủ có thể chuyển mã cho máy khách mà nó có thể chạy, chẳng hạn như JavaScript cho một ứng dụng một trang. The server may transfer code to the client that it can run, such as JavaScript for a single-page application.

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ụ web

Dị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:

https://api.github.com/users/

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 HTTP

REST API lắng nghe các phương thức HTTP như

>>> 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
5,
>>> 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
6 và
>>> 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 để 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:

Phương pháp HTTPSự mô tả
>>> 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
5
Lấy một tài nguyên hiện có.
>>> 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
6
Tạo một tài nguyên mới.
>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
0
Cập nhật một tài nguyên hiện có.
>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
1
Cập nhật một phần một tài nguyên hiện có.
>>> 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
Xóa một tài nguyên.

Ứ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ái

Khi 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:

Mã sốNghĩaSự mô tả
>>> 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
5
Lấy một tài nguyên hiện có.
>>> 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
6
Tạo một tài nguyên mới.
>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
0
Cập nhật một tài nguyên hiện có.
>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
1
Cập nhật một phần một tài nguyên hiện có.
>>> 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
Xóa một tài nguyên.Ứ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ái
Khi 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.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:Mã số
Nghĩa
>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
3
ĐƯỢC RỒI
Các hành động được yêu cầu đã thành công.
>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
4
Tạo
Một tài nguyên mới đã được tạo ra.
>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
5
Đã được chấp nhận
Yêu cầu đã được nhận, nhưng chưa có sửa đổi nào được thực hiện.
>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
6
Không có nội dung
Yêu cầu đã thành công, nhưng phản hồi không có nội dung.
>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
7
Yêu cầu xấu

Yêu cầu đã bị dị tật.

>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
8
Không được phép
Khách hàng không được phép thực hiện hành động được yêu cầu.
>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
9
Không tìm thấyTài nguyên được yêu cầu không được tìm thấy.
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/10"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 10, 'title': 'illo est ... aut', 'completed': True}

>>> todo = {"userId": 1, "title": "Wash car", "completed": True}
>>> response = requests.put(api_url, json=todo)
>>> response.json()
{'userId': 1, 'title': 'Wash car', 'completed': True, 'id': 10}

>>> response.status_code
200
0
Loại phương tiện truyền thông không được hỗ trợ
Định dạng dữ liệu yêu cầu không được máy chủ hỗ trợ.
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/10"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 10, 'title': 'illo est ... aut', 'completed': True}

>>> todo = {"userId": 1, "title": "Wash car", "completed": True}
>>> response = requests.put(api_url, json=todo)
>>> response.json()
{'userId': 1, 'title': 'Wash car', 'completed': True, 'id': 10}

>>> response.status_code
200
1

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.

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/10"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 10, 'title': 'illo est ... aut', 'completed': True}

>>> todo = {"userId": 1, "title": "Wash car", "completed": True}
>>> response = requests.put(api_url, json=todo)
>>> response.json()
{'userId': 1, 'title': 'Wash car', 'completed': True, 'id': 10}

>>> response.status_code
200
2endpoints.

Lỗi máy chủ nội bộ

Phương pháp HTTPSự mô tảSự mô tả
>>> 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
5
Lấy một tài nguyên hiện có.
>>> 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
6
>>> 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
5
Lấy một tài nguyên hiện có.
>>> 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
6
>>> 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
6
Lấy một tài nguyên hiện có.
>>> 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
6
>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
0
Lấy một tài nguyên hiện có.
>>> 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
6
>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
1
Lấy một tài nguyên hiện có.
>>> 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
6
>>> 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
Lấy một tài nguyên hiện có.
>>> 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
6

Tạo một tài nguyên mới.

>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
0

Cá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

>>> 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 để 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

>>> 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, bạn cần cài đặt nó trước. Bạn có thể sử dụng
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)
15 để cài đặt nó:

$ python -m pip install requests

Bây giờ bạn đã cài đặt

>>> 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, bạn có thể bắt đầu gửi các yêu cầu HTTP.

LẤY

>>> 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
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.
>>> 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
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

>>> 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
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à
>>> 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 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

>>> 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
5 đến điểm cuối của JsonPlaceholder:

>>>

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}

Mã này gọi

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)
22 để gửi yêu cầu
>>> 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
5 tới
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)
24, đáp ứng với mục
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 với ID
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)
26. Sau đó, bạn có thể gọi
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)
27 trên đối tượng
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)
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ề

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)
28:

>>>

>>> response.status_code
200

>>> response.headers["Content-Type"]
'application/json; charset=utf-8'

Mã này gọi

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)
22 để gửi yêu cầu
>>> 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
5 tới
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)
24, đáp ứng với mục
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 với ID
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)
26. Sau đó, bạn có thể gọi
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)
27 trên đối tượng
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)
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ề

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)
28:

{
    "userId": 1,
    "title": "Buy milk",
    "completed": false
}

Tại đây, bạn truy cập

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)
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
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)
31. Từ điển này chứa siêu dữ liệu về phản hồi, chẳng hạn như
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)
32 của phản hồi.

>>>

>>> 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

Mã này gọi

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)
22 để gửi yêu cầu
>>> 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
5 tới
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)
24, đáp ứng với mục
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 với ID
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)
26. Sau đó, bạn có thể gọi
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)
27 trên đối tượng
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)
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ề

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)
28:

>>>

>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201

Mã này gọi

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)
22 để gửi yêu cầu
>>> 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
5 tới
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)
24, đáp ứng với mục
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 với ID
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)
26. Sau đó, bạn có thể gọi
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)
27 trên đối tượng
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)
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ề

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)
28:

Tại đây, bạn truy cập

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)
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
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)
31. Từ điển này chứa siêu dữ liệu về phản hồi, chẳng hạn như
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)
32 của phản hồi.

BƯU KIỆN

Bây giờ, hãy xem cách bạn sử dụng dữ liệu

>>> 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 đế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
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

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 mới. Quay lại Python REPLE, hãy chạy mã sau để tạo
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 mới:

>>>

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/10"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 10, 'title': 'illo est ... aut', 'completed': True}

>>> todo = {"userId": 1, "title": "Wash car", "completed": True}
>>> response = requests.put(api_url, json=todo)
>>> response.json()
{'userId': 1, 'title': 'Wash car', 'completed': True, 'id': 10}

>>> response.status_code
200

Mã này gọi

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)
22 để gửi yêu cầu
>>> 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
5 tới
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)
24, đáp ứng với mục
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 với ID
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)
26. Sau đó, bạn có thể gọi
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)
27 trên đối tượng
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)
28 để xem dữ liệu trở lại từ API.

Tiếp theo, bạn sẽ sử dụng

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)
83 để sửa đổi giá trị của một trường cụ thể trên
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 hiện có.
>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
1 khác với
>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
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

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 từ ví dụ cuối cùng để thử
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)
83. Đây là các giá trị hiện tại:

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)
0

Bây giờ bạn có thể cập nhật

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)
89 với giá trị mới:

>>>

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)
1

Khi bạn gọi

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)
61, bạn có thể thấy rằng
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)
89 đã được cập nhật lên
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)
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:

>>>

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)
2

Khi bạn gọi

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)
61, bạn có thể thấy rằng
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)
89 đã được cập nhật lên
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)
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

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)
95 với URL API chứa ID cho
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 muốn xóa. Điều này gửi yêu cầu
>>> 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 đế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ên

Bướ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ư

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/10"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 10, 'title': 'illo est ... aut', 'completed': True}

>>> todo = {"userId": 1, "title": "Wash car", "completed": True}
>>> response = requests.put(api_url, json=todo)
>>> response.json()
{'userId': 1, 'title': 'Wash car', 'completed': True, 'id': 10}

>>> response.status_code
200
7,
https://api.github.com/users/
00 hoặc
https://api.github.com/users/
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.

Khi bạn làm điều này, hãy đảm bảo xem xét bất kỳ tài nguyên lồng nhau nào. Ví dụ:
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/10"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 10, 'title': 'illo est ... aut', 'completed': True}

>>> todo = {"userId": 1, "title": "Wash car", "completed": True}
>>> response = requests.put(api_url, json=todo)
>>> response.json()
{'userId': 1, 'title': 'Wash car', 'completed': True, 'id': 10}

>>> response.status_code
200
7 có thể có
https://api.github.com/users/
03 hoặc
https://api.github.com/users/
00 có thể chứa
https://api.github.com/users/
05. Thiết lập các phân cấp tài nguyên này sẽ giúp ích khi bạn xác định các điểm cuối API.
Xác định điểm cuối của bạnKhi bạn đã xác định các tài nguyên trong dịch vụ web của mình, bạn sẽ muốn sử dụng chúng để xác định các điểm cuối API. Dưới đây là một số điểm cuối ví dụ cho tài nguyên
https://api.github.com/users/
01 bạn có thể tìm thấy trong API cho dịch vụ xử lý thanh toán:
Phương pháp HTTPĐiểm cuối APISự mô tả
Phương pháp HTTPĐiểm cuối APISự mô tả
>>> 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
5
Điểm cuối APISự mô tả
>>> 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
5
Điểm cuối APISự mô tả
>>> 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
5
Điểm cuối APISự mô tả
>>> 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
5
Điểm cuối APISự mô tả

>>> 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
5

https://api.github.com/users/
08

Khi bạn làm điều này, hãy đảm bảo xem xét bất kỳ tài nguyên lồng nhau nào. Ví dụ:
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/10"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 10, 'title': 'illo est ... aut', 'completed': True}

>>> todo = {"userId": 1, "title": "Wash car", "completed": True}
>>> response = requests.put(api_url, json=todo)
>>> response.json()
{'userId': 1, 'title': 'Wash car', 'completed': True, 'id': 10}

>>> response.status_code
200
7 có thể có
https://api.github.com/users/
03 hoặc
https://api.github.com/users/
00 có thể chứa
https://api.github.com/users/
05. Thiết lập các phân cấp tài nguyên này sẽ giúp ích khi bạn xác định các điểm cuối API.
Xác định điểm cuối của bạnKhi bạn đã xác định các tài nguyên trong dịch vụ web của mình, bạn sẽ muốn sử dụng chúng để xác định các điểm cuối API. Dưới đây là một số điểm cuối ví dụ cho tài nguyên
https://api.github.com/users/
01 bạn có thể tìm thấy trong API cho dịch vụ xử lý thanh toán:
Phương pháp HTTPĐiểm cuối APISự mô tả
Phương pháp HTTPĐiểm cuối APISự mô tả
>>> 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
5
Điểm cuối APISự mô tả
>>> 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
5
Điểm cuối APISự mô tả
>>> 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
5
Điểm cuối APISự mô tả
>>> 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
5
Điểm cuối APISự mô tả

>>> 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
5

https://api.github.com/users/
08

Nhận một danh sách các giao dịch.

https://api.github.com/users/
10

Nhận một giao dịch duy nhất.

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

Tạo một giao dịch mới.

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)
3

>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
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
https://api.github.com/users/
40 tags are nested inside of
https://api.github.com/users/
41.

Bây giờ, hãy xem cùng một

https://api.github.com/users/
39 trong JSON:

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)
4

JSON 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ông

Khi 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

https://api.github.com/users/
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ư
>>> 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.

Để bắt đầu mọi thứ, hãy xem yêu cầu

>>> 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
5 đến
https://api.github.com/users/
46, trả về danh sách
https://api.github.com/users/
43:

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)
5

Yêu cầu HTTP này được tạo thành từ bốn phần:

  1. >>> 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
    
    5 là loại phương pháp HTTP.
    is the HTTP method type.
  2. https://api.github.com/users/
    
    46 là điểm cuối API.
    is the API endpoint.
  3. https://api.github.com/users/
    
    50 là phiên bản HTTP.
    is the HTTP version.
  4. https://api.github.com/users/
    
    51 là máy chủ API.
    is the API host.

Bốn phần này là tất cả những gì bạn cần để gửi yêu cầu

>>> 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
5 đến
https://api.github.com/users/
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:

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)
6

API trả về một phản hồi chứa danh sách

https://api.github.com/users/
43. Bạn biết rằng phản hồi đã thành công vì mã trạng thái
https://api.github.com/users/
55. Phản hồi cũng có tiêu đề
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)
32 được đặt thành
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)
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 đề

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)
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
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)
32 thành
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)
44. Nếu XML, thì hãy đặt nó thành
https://api.github.com/users/
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

>>> 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
5 thành công nào, bạn nên trả lại
https://api.github.com/users/
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

>>> 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
5 khác, lần này là cho một chiếc xe duy nhất:

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)
7

Yêu cầu HTTP này truy vấn API cho xe

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)
26. Ở đây, câu trả lời:

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)
8

Phả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

https://api.github.com/users/
55.

Tiếp theo, hãy xem yêu cầu

>>> 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
6 để thêm một chiếc xe mới:

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)
9

Yêu cầu

>>> 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
6 này bao gồm JSON cho chiếc xe mới trong yêu cầu. Nó đặt tiêu đề
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)
32 thành
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)
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:

https://api.github.com/users/
0

Phản hồi này có mã trạng thái

https://api.github.com/users/
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
https://api.github.com/users/
71 thay vì
https://api.github.com/users/
55 cho tất cả các yêu cầu
>>> 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
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

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)
62 được tạo bởi API. Điều quan trọng là phải gửi lại một
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)
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

>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
0:

https://api.github.com/users/
1

Yêu cầu này sử dụng

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)
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ở,
>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
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:

https://api.github.com/users/
2

Phản hồi bao gồm một bản sao của

https://api.github.com/users/
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
>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
0. Điều tương tự cũng áp dụng cho yêu cầu
>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
1:

https://api.github.com/users/
3

>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
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
https://api.github.com/users/
84 và
https://api.github.com/users/
85 sẽ được cập nhật với các giá trị mới. Ở đây, câu trả lời:

https://api.github.com/users/
4

Phản hồi chứa một bản sao đầy đủ của

https://api.github.com/users/
80. Như bạn có thể thấy, chỉ các trường
https://api.github.com/users/
84 và
https://api.github.com/users/
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

>>> 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ột yêu cầu
>>> 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 để xóa
https://api.github.com/users/
80:

Yêu cầu

>>> 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 này cho API xóa
https://api.github.com/users/
80 bằng ID
https://api.github.com/users/
94. Ở đây, câu trả lời:

Phản hồi này chỉ bao gồm mã trạng thái

https://api.github.com/users/
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ì
https://api.github.com/users/
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ỗi

Luô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:

https://api.github.com/users/
5

Tại đây, người dùng gửi yêu cầu

>>> 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
5 đến
https://api.github.com/users/
98, không tồn tại. API gửi lại phản hồi sau:

https://api.github.com/users/
6

Phản hồi này bao gồm mã trạng thái

https://api.github.com/users/
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ệ:

https://api.github.com/users/
7

Yêu cầu

>>> 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
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 (
$ python -m pip install requests
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 đề:

https://api.github.com/users/
8

Phả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

$ python -m pip install requests
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

>>> 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
6 nhưng bao gồm một loại phương tiện không được hỗ trợ:

https://api.github.com/users/
9

Trong 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:

$ python -m pip install requests
0

Phản hồi này bao gồm mã trạng thái

$ python -m pip install requests
04 để chỉ ra rằng yêu cầu
>>> 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
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

>>> 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
6 nhưng bao gồm dữ liệu
https://api.github.com/users/
80 không phù hợp với các trường của dữ liệu khác:

$ python -m pip install requests
1

Trong yêu cầu này, người dùng thêm các trường

$ python -m pip install requests
08 và
$ python -m pip install requests
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:

$ python -m pip install requests
2

Phản hồi này bao gồm mã trạng thái

$ python -m pip install requests
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ịch

Trong 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:

  • $ python -m pip install requests
    
    11 là tên của đất nước.
    is the name of the country.
  • $ python -m pip install requests
    
    12 là thủ đô của đất nước.
    is the capital of the country.
  • $ python -m pip install requests
    
    13 là khu vực của đất nước tính bằng km vuông.
    is the area of the country in square kilometers.

Các trường

$ python -m pip install requests
11,
$ python -m pip install requests
12 và
$ python -m pip install requests
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

$ python -m pip install requests
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ệt

Flask 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:

$ python -m pip install requests
3

Ứng dụng này xác định điểm cuối API

$ python -m pip install requests
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:

  1. $ python -m pip install requests
    
    19 Trả về danh sách
    $ python -m pip install requests
    
    17.
    returns the list of
    $ python -m pip install requests
    
    17.
  2. $ python -m pip install requests
    
    21 thêm
    $ python -m pip install requests
    
    22 mới vào danh sách.
    adds a new
    $ python -m pip install requests
    
    22 to the list.

Bạn có thể dùng thử ứng dụng này bằng cách cài đặt

$ python -m pip install requests
23 với
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)
15:

$ python -m pip install requests
4

Khi

$ python -m pip install requests
23 được cài đặt, hãy lưu mã trong một tệp có tên
$ python -m pip install requests
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à
$ python -m pip install requests
27 thành
$ python -m pip install requests
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

$ python -m pip install requests
26:

$ python -m pip install requests
5

Điều này đặt

$ python -m pip install requests
27 thành
$ python -m pip install requests
26 trong vỏ hiện tại. Tùy chọn, bạn có thể đặt
$ python -m pip install requests
32 thành
$ python -m pip install requests
33, đặt bình ở chế độ gỡ lỗi:debug mode:

$ python -m pip install requests
6

Bê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

$ python -m pip install requests
34:

$ python -m pip install requests
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

$ python -m pip install requests
35 và bạn sẽ thấy phản hồi sau:

$ python -m pip install requests
8

Phản hồi JSON này chứa ba

$ python -m pip install requests
17 được xác định vào đầu
$ python -m pip install requests
26. Hãy xem mã sau để xem cách thức hoạt động của nó:

$ python -m pip install requests
9

Mã này sử dụng

$ python -m pip install requests
38, một công cụ trang trí tuyến đường, để kết nối
>>> 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
5 yêu cầu với một chức năng trong ứng dụng. Khi bạn truy cập
$ python -m pip install requests
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,

$ python -m pip install requests
41 lấy
$ python -m pip install requests
17, đây là danh sách Python và chuyển đổi nó thành JSON với
$ python -m pip install requests
43. JSON này được trả lại trong phản hồi.

Bây giờ hãy xem

$ python -m pip install requests
44. Chức năng này xử lý
>>> 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
6 yêu cầu đến
$ python -m pip install requests
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
$ python -m pip install requests
47 để nhận thông tin về yêu cầu HTTP hiện tại:

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
0

Hàm này thực hiện các hoạt động sau:

  1. Sử dụng
    $ python -m pip install requests
    
    48 để kiểm tra xem yêu cầu có phải là JSON không
  2. Tạo một thể hiện
    $ python -m pip install requests
    
    22 mới với
    $ python -m pip install requests
    
    50
  3. Tìm
    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)
    
    62 tiếp theo và đặt nó trên
    $ python -m pip install requests
    
    22
  4. Nối thêm
    $ python -m pip install requests
    
    22 mới vào
    $ python -m pip install requests
    
    17
  5. Trả lại
    $ python -m pip install requests
    
    22 trong phản hồi cùng với mã trạng thái
    https://api.github.com/users/
    
    71
  6. Trả về thông báo lỗi và mã trạng thái
    $ python -m pip install requests
    
    04 nếu yêu cầu không phải là json

$ python -m pip install requests
44 cũng gọi
$ python -m pip install requests
59 để xác định
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)
62 cho
$ python -m pip install requests
22 mới:

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
1

Hà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

$ python -m pip install requests
62 trên chúng để có được giá trị lớn nhất. Nó tăng giá trị này bởi
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)
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

$ python -m pip install requests
22 mới vào danh sách
$ python -m pip install requests
17:

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
2

Lệnh Curl này có một số tùy chọn hữu ích để biết:

  • $ python -m pip install requests
    
    66 Đặt phương thức HTTP cho yêu cầu.
    sets the HTTP method for the request.
  • $ python -m pip install requests
    
    67 thêm một tiêu đề HTTP vào yêu cầu.
    adds an HTTP header to the request.
  • $ python -m pip install requests
    
    68 Xác định dữ liệu yêu cầu.
    defines the request data.

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

>>> 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
6 với tiêu đề
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)
32 được đặt thành
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)
44. API REST trả về
$ python -m pip install requests
72 cùng với JSON cho
$ python -m pip install requests
22 mới mà bạn đã thêm.

Bạn có thể sử dụng Curl để gửi yêu cầu

>>> 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
5 đến
$ python -m pip install requests
18 để xác nhận rằng
$ python -m pip install requests
22 mới đã được thêm vào. Nếu bạn không sử dụng
$ python -m pip install requests
66 trong lệnh Curl của mình, thì nó sẽ gửi yêu cầu
>>> 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
5 theo mặc định:

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
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 Django

Mộ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

$ python -m pip install requests
79 và
$ python -m pip install requests
80 với
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)
15:

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
4

Điều này cài đặt

$ python -m pip install requests
79 và
$ python -m pip install requests
80. Bây giờ bạn có thể sử dụng công cụ
$ python -m pip install requests
84 để tạo dự án Django mới. Chạy lệnh sau để bắt đầu dự án của bạn:

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
5

Lệ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à

$ python -m pip install requests
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

$ python -m pip install requests
85 và chạy lệnh sau:

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
6

Điều này tạo ra một thư mục

$ python -m pip install requests
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

$ python -m pip install requests
17 mà bạn vừa tạo là một thư mục khác có tên là
$ python -m pip install requests
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

$ python -m pip install requests
90 mà bên trong thư mục
$ python -m pip install requests
85. Thêm các dòng sau vào
$ python -m pip install requests
92 để kể Django về ứng dụng
$ python -m pip install requests
17 và khung REST Django:

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
7

Bạn đã thêm một dòng cho ứng dụng

$ python -m pip install requests
17 và
$ python -m pip install requests
95.

Bạn có thể tự hỏi tại sao bạn cần thêm

$ python -m pip install requests
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

$ python -m pip install requests
17, Cập nhật
$ python -m pip install requests
98 với mã sau:

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
8

Mã này xác định mô hình

$ python -m pip install requests
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:

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
9

Cá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

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
00 và lưu nó bên trong thư mục
$ python -m pip install requests
17:

>>> response.status_code
200

>>> response.headers["Content-Type"]
'application/json; charset=utf-8'
0

JSON 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:

>>> response.status_code
200

>>> response.headers["Content-Type"]
'application/json; charset=utf-8'
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

$ python -m pip install requests
99 từ trên cao. Bắt đầu bằng cách tạo một tệp có tên
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
03 bên trong ứng dụng
$ python -m pip install requests
17. Sau khi bạn thực hiện điều đó, hãy thêm mã sau vào
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
03:

>>> response.status_code
200

>>> response.headers["Content-Type"]
'application/json; charset=utf-8'
2

Bộ tuần tự này,

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
06, các lớp con
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
07 để tự động tạo nội dung JSON dựa trên các trường mô hình của
$ python -m pip install requests
99. Trừ khi được chỉ định, một lớp con
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
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
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
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

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
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à

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
11 cung cấp và các phương thức HTTP tương đương của chúng:

Phương pháp HTTPHoạt độngSự mô tả
>>> 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
5
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
14
Nhận một danh sách các quốc gia.
>>> 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
5
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
14
Nhận một danh sách các quốc gia.
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
16
Nhận một quốc gia duy nhất.
>>> 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
6
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
18
Tạo một đất nước mới.
>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
0
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
20
Cập nhật một quốc gia.
>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
1
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
22
Cập nhật một phần một quốc gia.
>>> 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

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
24

Xóa một quốc gia.

>>> response.status_code
200

>>> response.headers["Content-Type"]
'application/json; charset=utf-8'
3

Như 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

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
34 sẽ tự động tạo URL cho
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
11.

Tạo tệp

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
36 trong ứng dụng
$ python -m pip install requests
17 và thêm mã sau vào tệp:

>>> response.status_code
200

>>> response.headers["Content-Type"]
'application/json; charset=utf-8'
4

Mã này tạo ra

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
34 và đăng ký
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
26 theo URL
$ python -m pip install requests
17. Điều này sẽ đặt tất cả các URL cho
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
26 theo
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
42.

Cuối cùng, bạn cần cập nhật tệp cơ sở dự án

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
36 để bao gồm tất cả các URL
$ python -m pip install requests
17 trong dự án. Cập nhật tệp
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
36 bên trong thư mục
$ python -m pip install requests
85 với mã sau:

>>> response.status_code
200

>>> response.headers["Content-Type"]
'application/json; charset=utf-8'
5

Điều này đặt tất cả các URL theo

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
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
$ python -m pip install requests
85 để khởi động máy chủ phát triển Django:

>>> response.status_code
200

>>> response.headers["Content-Type"]
'application/json; charset=utf-8'
6

Máy chủ phát triển hiện đang chạy. Đi trước và gửi yêu cầu

>>> 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
5 tới
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
42 để lấy danh sách tất cả các quốc gia trong dự án Django của bạn:

>>> response.status_code
200

>>> response.headers["Content-Type"]
'application/json; charset=utf-8'
7

Django 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.

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
34 bạn đã tạo trong
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
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:

  • >>> import requests
    >>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
    >>> response = requests.get(api_url)
    >>> response.json()
    {'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
    
    53
  • >>> import requests
    >>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
    >>> response = requests.get(api_url)
    >>> response.json()
    {'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
    
    54
  • >>> import requests
    >>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
    >>> response = requests.get(api_url)
    >>> response.json()
    {'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
    
    55
  • >>> import requests
    >>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
    >>> response = requests.get(api_url)
    >>> response.json()
    {'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
    
    56
  • >>> import requests
    >>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
    >>> response = requests.get(api_url)
    >>> response.json()
    {'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
    
    57
  • >>> import requests
    >>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
    >>> response = requests.get(api_url)
    >>> response.json()
    {'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
    
    58

Bạn có thể thử thêm một vài điểm cuối dưới đây. Gửi yêu cầu

>>> 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
6 tới
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
42 để tạo
$ python -m pip install requests
99 mới trong dự án Django của bạn:

>>> response.status_code
200

>>> response.headers["Content-Type"]
'application/json; charset=utf-8'
8

Điều này tạo ra một

$ python -m pip install requests
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
https://api.github.com/users/
71 và
$ python -m pip install requests
99 mới.

Bạn có thể xem

$ python -m pip install requests
99 hiện có bằng cách gửi yêu cầu đến
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
54 với
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)
62 hiện có. Chạy lệnh sau để nhận
$ python -m pip install requests
99 đầu tiên:

>>> response.status_code
200

>>> response.headers["Content-Type"]
'application/json; charset=utf-8'
9

Phản hồi chứa thông tin cho

$ python -m pip install requests
99 đầu tiên. Những ví dụ này chỉ đề cập đến các yêu cầu
>>> 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
5 và
>>> 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
6. Vui lòng thử các yêu cầu
>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
0,
>>> import requests
>>> import json
>>> api_url = "https://jsonplaceholder.typicode.com/todos"
>>> todo = {"userId": 1, "title": "Buy milk", "completed": False}
>>> headers =  {"Content-Type":"application/json"}
>>> response = requests.post(api_url, data=json.dumps(todo), headers=headers)
>>> response.json()
{'userId': 1, 'title': 'Buy milk', 'completed': False, 'id': 201}

>>> response.status_code
201
1 và
>>> 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 để 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.

Fastapi

Fastapi 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:

{
    "userId": 1,
    "title": "Buy milk",
    "completed": false
}
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

$ python -m pip install requests
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

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
76 với
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)
15:

{
    "userId": 1,
    "title": "Buy milk",
    "completed": false
}
1

Bạn cũng sẽ cần cài đặt

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
78, một máy chủ có thể chạy các ứng dụng Fastapi:

{
    "userId": 1,
    "title": "Buy milk",
    "completed": false
}
2

Nếu bạn đã cài đặt cả

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
76 và
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
80, thì hãy lưu mã ở trên trong một tệp có tên
$ python -m pip install requests
26. Chạy lệnh sau để khởi động máy chủ phát triển:

{
    "userId": 1,
    "title": "Buy milk",
    "completed": false
}
3

Máy chủ hiện đang chạy. Mở một trình duyệt và truy cập

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
82. Bạn sẽ thấy Fastapi trả lời với điều này:

{
    "userId": 1,
    "title": "Buy milk",
    "completed": false
}
4

Fastapi trả lời với một mảng JSON chứa danh sách

$ python -m pip install requests
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
>>> 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
6 đến
$ python -m pip install requests
18:

{
    "userId": 1,
    "title": "Buy milk",
    "completed": false
}
5

Bạn đã thêm một quốc gia mới. Bạn có thể xác nhận điều này với

$ python -m pip install requests
19:

{
    "userId": 1,
    "title": "Buy milk",
    "completed": false
}
6

Fastapi 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

$ python -m pip install requests
26, thì bạn sẽ thấy một lớp gọi là
$ python -m pip install requests
99 kéo dài
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
89. Lớp
$ python -m pip install requests
99 mô tả cấu trúc của dữ liệu trong API còn lại:

{
    "userId": 1,
    "title": "Buy milk",
    "completed": false
}
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 ở đó:

{
    "userId": 1,
    "title": "Buy milk",
    "completed": false
}
8

Trong dòng này, bạn thấy

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
91, lưu trữ một số nguyên cho ID của
$ python -m pip install requests
99. Nó sử dụng hàm
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
93 từ Pydantic để sửa đổi hành vi của
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
91. Trong ví dụ này, bạn đã vượt qua
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
93 Các đối số từ khóa
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
96 và
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
97.

Đối số đầu tiên,

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
96, được đặt thành
$ python -m pip install requests
59. Đối số này chỉ định một hàm để chạy bất cứ khi nào
$ python -m pip install requests
99 mới được tạo. Giá trị trả về sẽ được gán cho
>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
91.

Đối số thứ hai,

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
97, được đặt thành
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)
62. Điều này cho Fastapi xuất ra khóa
>>> response.status_code
200

>>> response.headers["Content-Type"]
'application/json; charset=utf-8'
04 thay vì
>>> response.status_code
200

>>> response.headers["Content-Type"]
'application/json; charset=utf-8'
05 trong JSON:

{
    "userId": 1,
    "title": "Buy milk",
    "completed": false
}
9

Điều này

>>> import requests
>>> api_url = "https://jsonplaceholder.typicode.com/todos/1"
>>> response = requests.get(api_url)
>>> response.json()
{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
97 cũng có nghĩa là bạn có thể sử dụng
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)
62 khi bạn tạo một
$ python -m pip install requests
99 mới. Bạn có thể thấy điều này trong danh sách
$ python -m pip install requests
17:

>>> 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
0

Danh sách này chứa ba trường hợp

$ python -m pip install requests
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,

$ python -m pip install requests
41, trả về danh sách
$ python -m pip install requests
17 cho các yêu cầu
>>> 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
5 cho
$ python -m pip install requests
18:

>>> 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
1

Fastapi 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

>>> 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
6 cho
$ python -m pip install requests
18. Bạn có thể thấy trong hàm API thứ hai bên dưới rằng tham số
$ python -m pip install requests
22 có chú thích
$ python -m pip install requests
99:

>>> 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
2

Chú thích loại này bảo Fastapi xác nhận JSON đến với

$ python -m pip install requests
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:

>>> 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
3

JSON trong yêu cầu này bị thiếu giá trị cho

$ python -m pip install requests
13, vì vậy Fastapi đã trả lại phản hồi với mã trạng thái
$ python -m pip install requests
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

>>> response.status_code
200

>>> response.headers["Content-Type"]
'application/json; charset=utf-8'
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ận

API 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::

  • Xác định phong cách kiến ​​trúc còn lạiREST architecture style
  • Làm việc với các phương thức và mã trạng thái HTTPHTTP methods and status codes
  • 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
    
    4 để lấy và tiêu thụ dữ liệu từ API bên ngoài
    >>> 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
    to get and consume data from an external API
  • Xác định các điểm cuối, dữ liệu và phản hồi cho API RESTendpoints, data, and responses for a REST API
  • Bắt đầu với các công cụ Python để xây dựng API RESTREST API

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 ..