Hướng dẫn rest api in python w3schools - phần còn lại api trong python w3schools


Thí dụ

Thực hiện yêu cầu đến một trang web và in văn bản phản hồi:

Nhập yêu cầu

x = requests.get ('https://w3schools.com/python/demopage.htm')

print(x.text)

Chạy ví dụ »


Định nghĩa và cách sử dụng

Mô -đun

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [28720]
INFO:     Started server process [28722]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
1 cho phép bạn gửi các yêu cầu HTTP bằng Python.

Yêu cầu HTTP trả về một đối tượng phản hồi với tất cả dữ liệu phản hồi (nội dung, mã hóa, trạng thái, v.v.).


Tải xuống và cài đặt mô -đun yêu cầu

Điều hướng dòng lệnh của bạn đến vị trí của PIP và nhập các mục sau:

C: \ Users \ Your Name \ AppData \ Local \ Program


Cú pháp

Yêu cầu.methodname (params)


Phương pháp

Phương phápSự mô tả
Xóa (URL, ARGS)Gửi yêu cầu xóa đến URL được chỉ định
Nhận (url, params, args)Gửi yêu cầu nhận đến URL được chỉ định
đầu (url, args)Gửi yêu cầu đầu đến URL được chỉ định
Bản vá (URL, dữ liệu, ARGS)Gửi yêu cầu bản vá đến URL được chỉ định
Đăng (URL, Dữ liệu, JSON, ARGS)Gửi yêu cầu bài đăng đến URL được chỉ định
đặt (url, dữ liệu, args)Gửi yêu cầu đặt đến URL được chỉ định
Yêu cầu (Phương pháp, URL, ARGS)Gửi yêu cầu của phương thức được chỉ định đến URL được chỉ định


API Web - Giới thiệu

API web là giấc mơ của nhà phát triển.

  • Nó có thể mở rộng chức năng của trình duyệt
  • Nó có thể đơn giản hóa rất nhiều các chức năng phức tạp
  • Nó có thể cung cấp cú pháp dễ dàng cho mã phức tạp

API web là gì?

API là viết tắt của giao diện lập trình ứng dụng.Application Programming Interface.

API Web là giao diện lập trình ứng dụng cho web.

API trình duyệt có thể mở rộng chức năng của trình duyệt web.

API máy chủ có thể mở rộng chức năng của máy chủ web.


API trình duyệt

Tất cả các trình duyệt đều có một bộ API Web tích hợp để hỗ trợ các hoạt động phức tạp và để giúp truy cập dữ liệu.

Ví dụ, API định vị địa lý có thể trả về tọa độ của nơi trình duyệt.

Thí dụ

Nhận vĩ độ và kinh độ của vị trí người dùng:

const myelement = document.getEuityById ("demo");

hàm getLocation () {& nbsp; if (navigator.geoLocation) {& nbsp; & nbsp; & nbsp; Navigator.GeoLocation.getCurrentPocation (ShowPocation); & nbsp; } other {& nbsp; & nbsp; & nbsp; myelement.innerhtml = "định vị địa lý không được hỗ trợ bởi trình duyệt này."; & nbsp; }}
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(showPosition);
  } else {
    myElement.innerHTML = "Geolocation is not supported by this browser.";
  }
}

Hiển thị chức năng (vị trí) {& nbsp; myelement.innerhtml = "Latitude:" + vị trí.coords.latitude + & nbsp; "Kinh độ:" + vị trí.coords.longitude; }
  myElement.innerHTML = "Latitude: " + position.coords.latitude +
  "
Longitude: " + position.coords.longitude;
}

Hãy tự mình thử »



API của bên thứ ba

API của bên thứ ba không được tích hợp vào trình duyệt của bạn.

Để sử dụng các API này, bạn sẽ phải tải xuống mã từ web.

Examples:

  • API YouTube - Cho phép bạn hiển thị video trên trang web.
  • API Twitter - Cho phép bạn hiển thị các tweet trên một trang web.
  • API Facebook - Cho phép bạn hiển thị thông tin Facebook trên một trang web.


Trong phần này, chúng tôi thu thập các hướng dẫn liên quan đến thiết kế API hoặc tương tác với API bằng Python. API REST trong các ứng dụng web sẽ là một ví dụ mà Python tỏa sáng.

Tiền thưởng miễn phí: Bấm vào đây để tải xuống một bản sao của Hướng dẫn "REST API ví dụ" và nhận được giới thiệu thực hành về các nguyên tắc API Python + REST với các ví dụ có thể hành động. Click here to download a copy of the "REST API Examples" Guide and get a hands-on introduction to Python + REST API principles with actionable examples.

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem nó cùng với hướng dẫn bằng văn bản để làm sâu sắc thêm sự hiểu biết của bạn: Python Rest Apis với Fastapi This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Python REST APIs With FastAPI

Làm thế nào để bạn gọi một API trong Python?application programming interfaces, is an important part of making your software accessible to a broad range of users. In this tutorial, you will learn the main concepts of FastAPI and how to use it to quickly create web APIs that implement best practices by default.

Thực hiện cuộc gọi API của bạn.

def get_data (tự, API):.:

  • Sử dụng tham số đường dẫn để có đường dẫn URL duy nhất cho mỗi mụcpath parameters to get a unique URL path per item
  • Nhận dữ liệu JSON trong các yêu cầu của bạn bằng Pydanticpydantic
  • Sử dụng các thực tiễn tốt nhất API như xác thực, tuần tự hóa và tài liệuvalidation, serialization, and documentation
  • Tiếp tục tìm hiểu về Fastapi và Pydantic cho các trường hợp sử dụng khác nhauyour use cases

Bây giờ bạn đã sẵn sàng để bắt đầu tạo API hiệu suất cao của riêng bạn cho các dự án của bạn. Nếu bạn muốn đi sâu hơn vào thế giới của Fastapi, thì bạn có thể làm theo hướng dẫn sử dụng chính thức trong tài liệu Fastapi.

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem nó cùng với hướng dẫn bằng văn bản để làm sâu sắc thêm sự hiểu biết của bạn: Python Rest Apis với Fastapi

Làm thế nào để bạn gọi một API trong Python?

Thực hiện cuộc gọi API của bạn.

  • def get_data (tự, API):.: It offers very high performance, on par with NodeJS and Go, thanks to Starlette and pydantic.
  • phản hồi = requests.get (f "{api}").: It allows for significant increases in development speed.
  • Nếu phản hồi.status_code == 200:.: It reduces the possibility for human-induced errors.
  • In ("thành công đã tìm nạp dữ liệu").: It offers great editor support, with completion everywhere and less time debugging.
  • print (f "Hello person, có {respons.status_code} lỗi với yêu cầu của bạn").: It’s designed to be uncomplicated to use and learn, so you can spend less time reading documentation.
  • Là yêu cầu được xây dựng trong Python?: It minimizes code duplication.
  • Yêu cầu là một trong những thư viện Python phổ biến nhất không được bao gồm trong Python.: It provides production-ready code with automatic interactive documentation.
  • Làm cách nào để nhận được phản hồi HTTP trong Python?: It’s based on the open standards for APIs, OpenAPI and JSON Schema.

Phản hồi..

Cài đặt Fastapi

Như với bất kỳ dự án Python nào khác, tốt nhất là bắt đầu bằng cách tạo ra một môi trường ảo. Nếu bạn không quen thuộc với cách làm điều đó, thì bạn có thể kiểm tra mồi trên môi trường ảo.

Bước đầu tiên là cài đặt Fastapi và Uvicorn bằng

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [28720]
INFO:     Started server process [28722]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
2:

$ python -m pip install fastapi uvicorn[standard]

Với điều đó, bạn đã cài đặt Fastapi và Uvicorn và sẵn sàng tìm hiểu cách sử dụng chúng. Fastapi là khung bạn sẽ sử dụng để xây dựng API của mình và Uvicorn là máy chủ sẽ sử dụng API bạn xây dựng để phục vụ các yêu cầu.

Những bước đầu tiên

Để bắt đầu, trong phần này, bạn sẽ tạo một ứng dụng Fastapi tối thiểu, chạy nó với một máy chủ bằng Uvicorn, sau đó tìm hiểu tất cả các phần tương tác. Điều này sẽ cung cấp cho bạn một cái nhìn tổng quan rất nhanh về cách mọi thứ hoạt động.

Tạo API đầu tiên

Một tệp fastapi cơ bản trông như thế này:

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

Sao chép mã ở trên vào một tệp có tên

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [28720]
INFO:     Started server process [28722]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
3 và như thế, bạn có một ứng dụng API đầy đủ chức năng với một số thực tiễn tốt nhất như tài liệu tự động và tuần tự hóa được tích hợp. Bạn sẽ tìm hiểu thêm về các tính năng đó tiếp theo.

Mã này xác định ứng dụng của bạn, nhưng nó đã giành được tự chạy nếu bạn gọi trực tiếp với

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [28720]
INFO:     Started server process [28722]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
4. Để chạy nó, bạn cần một chương trình máy chủ. Trong các bước trên, bạn đã cài đặt Uvicorn. Đó sẽ là máy chủ của bạn.server program. In the steps above, you already installed Uvicorn. That will be your server.

Chạy ứng dụng API đầu tiên với Uvicorn

Chạy máy chủ trực tiếp bằng Uvicorn:

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [28720]
INFO:     Started server process [28722]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

Dòng được tô sáng trong đầu ra cho thấy URL nơi ứng dụng của bạn đang được phục vụ trong máy cục bộ của bạn. Vì bạn đã sử dụng

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [28720]
INFO:     Started server process [28722]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
5 để phát triển, khi bạn cập nhật mã ứng dụng của mình, máy chủ sẽ tự động tải lại.

Kiểm tra phản hồi

Mở trình duyệt của bạn đến

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [28720]
INFO:     Started server process [28722]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
6, điều này sẽ khiến trình duyệt của bạn gửi yêu cầu đến ứng dụng của bạn. Sau đó, nó sẽ gửi phản hồi JSON sau:

{"message": "Hello World"}

Thông báo JSON đó là cùng một từ điển mà bạn đã trả lại từ chức năng trong ứng dụng của mình. Fastapi chăm sóc việc tuần tự hóa Python

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [28720]
INFO:     Started server process [28722]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
7 thành một đối tượng JSON và đặt
$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [28720]
INFO:     Started server process [28722]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
8 thích hợp.

Kiểm tra tài liệu API tương tác

Bây giờ mở

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [28720]
INFO:     Started server process [28722]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
9 trong trình duyệt của bạn.

Bạn sẽ thấy tài liệu API tương tác tự động được cung cấp bởi Swagger UI:

Hướng dẫn rest api in python w3schools - phần còn lại api trong python w3schools

Giao diện người dùng dựa trên trình duyệt ghi lại API của bạn được cung cấp và tích hợp theo mặc định. Bạn không cần phải làm bất cứ điều gì khác để tận dụng nó với Fastapi.

Kiểm tra tài liệu API tương tác thay thế

Bây giờ, hãy truy cập

{"message": "Hello World"}
0 trong trình duyệt của bạn.

Bạn sẽ thấy tài liệu tự động thay thế được cung cấp bởi Redoc:

Hướng dẫn rest api in python w3schools - phần còn lại api trong python w3schools

Vì Fastapi dựa trên các tiêu chuẩn như Openapi, có nhiều cách khác để hiển thị tài liệu API. Fastapi cung cấp hai lựa chọn thay thế này theo mặc định.

API đầu tiên, từng bước

Bây giờ, hãy để phân tích mã đó từng bước và hiểu những gì mỗi phần làm.

Bước 1 là nhập

{"message": "Hello World"}
1: is to import
{"message": "Hello World"}
1:

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

{"message": "Hello World"}
1 là một lớp Python cung cấp tất cả các chức năng cho API của bạn.

Bước 2 là tạo một thể hiện

{"message": "Hello World"}
1: is to create a
{"message": "Hello World"}
1 instance:

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

Ở đây biến

{"message": "Hello World"}
4 sẽ là một ví dụ của lớp
{"message": "Hello World"}
1. Đây sẽ là điểm chính của sự tương tác để tạo API của bạn.

{"message": "Hello World"}
4 này giống nhau mà bạn đã đề cập ở trên trong lệnh để chạy máy chủ trực tiếp với
{"message": "Hello World"}
7:

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

Trước khi tiếp tục với Bước 3, nó đáng để dành một chút thời gian để làm quen với một vài điều khoản. Đường dẫn đề cập đến phần cuối của URL bắt đầu từ ký tự chém đầu tiên (

{"message": "Hello World"}
8). Vì vậy, trong một URL như
{"message": "Hello World"}
9, đường dẫn sẽ là
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
0.Path refers to the last part of the URL starting from the first forward slash character (
{"message": "Hello World"}
8). So, in a URL like
{"message": "Hello World"}
9, the path would be
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
0.

Một đường dẫn cũng thường được gọi là điểm cuối hoặc một tuyến đường, nhưng đường dẫn thuật ngữ sẽ được sử dụng trong hướng dẫn này. Khi bạn xây dựng một API, đường dẫn là cách chính bạn có thể tách tài nguyên.endpoint or a route, but the term path will be used in this tutorial. When you’re building an API, the path is the main way you can separate resources.

Một thuật ngữ quan trọng khác cần biết là hoạt động, được sử dụng để tham khảo bất kỳ phương thức yêu cầu HTTP nào:operation, which is used in reference to any of the HTTP request methods:

  • # main.py
    
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    async def root():
        return {"message": "Hello World"}
    
    1
  • # main.py
    
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    async def root():
        return {"message": "Hello World"}
    
    2
  • # main.py
    
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    async def root():
        return {"message": "Hello World"}
    
    3
  • # main.py
    
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    async def root():
        return {"message": "Hello World"}
    
    4
  • # main.py
    
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    async def root():
        return {"message": "Hello World"}
    
    5
  • # main.py
    
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    async def root():
        return {"message": "Hello World"}
    
    6
  • # main.py
    
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    async def root():
        return {"message": "Hello World"}
    
    7
  • # main.py
    
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    async def root():
        return {"message": "Hello World"}
    
    8

Với HTTP, bạn có thể giao tiếp với từng đường dẫn bằng một (hoặc nhiều) các hoạt động này. Biết hai thuật ngữ đó có nghĩa là gì, bạn đã sẵn sàng tiếp tục với bước ba.

Bước 3 là xác định một công cụ trang trí hoạt động đường dẫn: is to define a path operation decorator:

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
9 nói với Fastapi rằng chức năng bên dưới chịu trách nhiệm xử lý các yêu cầu đi đến đường dẫn
{"message": "Hello World"}
8 bằng cách sử dụng hoạt động
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
1. Đây là một nhà trang trí liên quan đến một hoạt động đường dẫn, hoặc một công cụ trang trí vận hành đường dẫn. Nếu bạn muốn tìm hiểu thêm một chút về các nhà trang trí, thì hãy xem Primer trên các nhà trang trí Python.decorator related to a path operation, or a path operation decorator. If you want to learn a bit more about decorators, then check out the Primer on Python Decorators.

Bạn cũng có thể sử dụng các hoạt động khác được đề cập ở trên:

  • # main.py
    
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    async def root():
        return {"message": "Hello World"}
    
    2
  • # main.py
    
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    async def root():
        return {"message": "Hello World"}
    
    3
  • # main.py
    
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    async def root():
        return {"message": "Hello World"}
    
    4
  • # main.py
    
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    async def root():
        return {"message": "Hello World"}
    
    5
  • # main.py
    
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    async def root():
        return {"message": "Hello World"}
    
    6
  • # main.py
    
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    async def root():
        return {"message": "Hello World"}
    
    7
  • # main.py
    
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    async def root():
        return {"message": "Hello World"}
    
    8

Trong mỗi trường hợp, bạn sẽ sử dụng bộ trang trí hoạt động đường dẫn thích hợp phía trên một chức năng chịu trách nhiệm xử lý các yêu cầu đó.

Bước 4 là xác định chức năng hoạt động đường dẫn hoặc chức năng bên dưới trình trang trí hoạt động đường dẫn: is to define the path operation function, or the function that goes below the path operation decorator:

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

Hàm này sẽ được Fastapi gọi bất cứ khi nào nhận được yêu cầu đến URL được chỉ định (

{"message": "Hello World"}
8) bằng hoạt động
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
2. Trong trường hợp này, nó là một hàm
$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
1.

Bạn cũng có thể định nghĩa nó là một hàm bình thường thay vì sử dụng

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
2:

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def root():
    return {"message": "Hello World"}

Nếu bạn không biết sự khác biệt giữa các hàm bình thường và các chức năng

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
1 và khi nào nên sử dụng chúng, hãy xem đồng thời và async/đang chờ trong tài liệu Fastapi.

Bước 5 là trả về nội dung: is to return the content:

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
0

Bạn có thể trả về một từ điển, danh sách hoặc giá trị số ít như chuỗi, số nguyên, v.v. Bạn cũng có thể trả lại các mô hình Pydantic, mà bạn sẽ tìm hiểu thêm về sau này.

Có nhiều đối tượng và mô hình khác sẽ được tự động chuyển đổi thành JSON, bao gồm các máy lập liên quan đến đối tượng (ORM) và các đối tượng khác. Hãy thử sử dụng những cái yêu thích của bạn, nó rất có thể có khả năng mà chúng đã được hỗ trợ.

Thông số đường dẫn: Nhận một mục theo ID

Bạn có thể khai báo các tham số đường dẫn hoặc biến có cùng cú pháp được sử dụng bởi các chuỗi được định dạng Python:parameters or variables with the same syntax used by Python formatted strings:

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
1

Giá trị của tham số đường dẫn

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
4 sẽ được chuyển đến hàm của bạn dưới dạng đối số
$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
4.

Vì vậy, nếu bạn chạy ví dụ này và truy cập

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
6, bạn sẽ thấy phản hồi này:

Phản hồi chứa

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
7, đó là những gì được truyền trong tham số đường dẫn
$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
4 và sau đó được trả lại trong một từ điển.

Tham số đường dẫn với các loại

Bạn có thể khai báo loại tham số đường dẫn trong hàm bằng Gợi ý loại Python tiêu chuẩn:

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
2

Trong trường hợp này, bạn tuyên bố

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
4 là
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
0.

Khai báo loại tham số đường dẫn sẽ cung cấp cho bạn hỗ trợ Trình chỉnh sửa bên trong chức năng của bạn, với kiểm tra lỗi, hoàn thành, v.v.

Chuyển đổi dữ liệu

Nếu bạn chạy ví dụ trên và điều hướng trình duyệt của bạn đến

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
1, thì bạn sẽ thấy phản hồi sau:

Lưu ý rằng giá trị mà chức năng của bạn nhận được và sau đó được trả về là

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
2, đó là Python
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
0, không phải là một chuỗi (
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
4). Vì vậy, với khai báo loại đó, Fastapi cung cấp cho bạn phân tích cú pháp yêu cầu tự động.request parsing.

Xác nhận dữ liệu

Nếu bạn trỏ trình duyệt của mình đến

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
6, thì bạn sẽ thấy lỗi HTTP đẹp:

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
3

Điều này là do tham số đường dẫn

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
4 có giá trị
$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
7, không phải là
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
0.

Lỗi tương tự sẽ xuất hiện nếu bạn cung cấp

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
9 thay vì
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
0, chẳng hạn như nếu bạn mở
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
1 trong trình duyệt của mình. Vì vậy, với cùng một gợi ý loại Python, Fastapi cung cấp cho bạn cả phân tích dữ liệu và xác thực dữ liệu.data parsing and data validation.

Cũng lưu ý rằng lỗi nêu rõ điểm chính xác nơi xác thực đã không vượt qua. Điều này cực kỳ hữu ích trong khi phát triển và gỡ lỗi mã tương tác với API của bạn.

Tài liệu

Khi bạn mở trình duyệt của mình tại

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [28720]
INFO:     Started server process [28722]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
9, bạn sẽ thấy một tài liệu API tương tác tự động:

Hướng dẫn rest api in python w3schools - phần còn lại api trong python w3schools

Một lần nữa, với cùng một khai báo loại Python, Fastapi cung cấp cho bạn tài liệu tương tác tự động, tích hợp UI Swagger. Lưu ý rằng tham số đường dẫn được khai báo là một số nguyên.

Bởi vì Fastapi được xây dựng trên đỉnh của tiêu chuẩn Openapi, nó cũng cung cấp một tài liệu API thay thế bằng cách sử dụng Redoc, bạn có thể truy cập vào lúc

{"message": "Hello World"}
0:

Hướng dẫn rest api in python w3schools - phần còn lại api trong python w3schools

Có nhiều công cụ tương thích khác, bao gồm các công cụ tạo mã cho nhiều ngôn ngữ.

Xử lý dữ liệu với Pydantic

Tất cả các xác thực dữ liệu được thực hiện dưới mui xe bởi Pydantic, vì vậy bạn nhận được tất cả các lợi ích từ nó và bạn biết bạn đang ở trong tay tốt.

Bạn có thể sử dụng cùng một khai báo loại với

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
4,
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
9,
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
6 và nhiều loại dữ liệu phức tạp khác.

Vấn đề đặt hàng: Đặt đường dẫn cố định lên hàng đầu

Khi tạo các hoạt động đường dẫn, bạn có thể tìm thấy các tình huống mà bạn có một đường dẫn cố định, như

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
7. Hãy nói rằng, nó có thể nhận dữ liệu về người dùng hiện tại. Bạn cũng có thể có đường dẫn
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
8 để lấy dữ liệu về một người dùng cụ thể bằng một số ID người dùng.

Bởi vì các hoạt động đường dẫn được đánh giá theo thứ tự, bạn cần đảm bảo rằng đường dẫn cho

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
7 được khai báo trước hướng dẫn cho
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
8:

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
4

Mặt khác, đường dẫn cho

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
8 cũng sẽ khớp với
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
7, nghĩ rằng nó nhận được tham số
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def root():
    return {"message": "Hello World"}
3 với giá trị
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def root():
    return {"message": "Hello World"}
4.

Cơ quan yêu cầu: Nhận dữ liệu JSON

Khi bạn cần gửi dữ liệu từ khách hàng đến API của bạn, bạn sẽ gửi nó dưới dạng cơ quan yêu cầu.

Một cơ quan yêu cầu là dữ liệu được gửi bởi khách hàng đến API của bạn. Cơ quan phản hồi là dữ liệu API của bạn gửi cho khách hàng. API của bạn hầu như luôn phải gửi một cơ thể phản hồi. Nhưng khách hàng không nhất thiết phải gửi các cơ quan yêu cầu mọi lúc.request body is data sent by the client to your API. A response body is the data your API sends to the client. Your API almost always has to send a response body. But clients don’t necessarily need to send request bodies all the time.

Để khai báo một cơ quan yêu cầu, bạn sử dụng các mô hình Pydantic, với tất cả sức mạnh và lợi ích của chúng. Bạn sẽ tìm hiểu thêm về họ dưới đây.

Sử dụng Pydantic để khai báo các mô hình dữ liệu JSON (hình dạng dữ liệu)

Đầu tiên, bạn cần nhập

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def root():
    return {"message": "Hello World"}
5 từ
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def root():
    return {"message": "Hello World"}
6 và sau đó sử dụng nó để tạo các lớp con xác định lược đồ hoặc hình dạng dữ liệu, bạn muốn nhận.schema, or data shapes, you want to receive.

Tiếp theo, bạn khai báo mô hình dữ liệu của mình dưới dạng một lớp kế thừa từ

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def root():
    return {"message": "Hello World"}
5, sử dụng các loại Python tiêu chuẩn cho tất cả các thuộc tính:

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
5

Khi một thuộc tính mô hình có giá trị mặc định, nó không bắt buộc. Nếu không, nó được yêu cầu. Để tạo thuộc tính tùy chọn, bạn có thể sử dụng

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def root():
    return {"message": "Hello World"}
8.

Ví dụ: mô hình trên tuyên bố một đối tượng JSON (hoặc Python

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [28720]
INFO:     Started server process [28722]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
7) như thế này:

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
6

Trong trường hợp này, vì

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
00 và
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
01 là tùy chọn vì chúng có giá trị mặc định là
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def root():
    return {"message": "Hello World"}
8, đối tượng JSON này cũng sẽ hợp lệ:

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
7

Một đối tượng JSON bỏ qua các giá trị mặc định cũng hợp lệ.

Tiếp theo, thêm mô hình Pydantic mới vào hoạt động đường dẫn của bạn dưới dạng tham số. Bạn tuyên bố nó giống như cách bạn khai báo tham số đường dẫn:

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
8

Tham số

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
03 có gợi ý loại
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
04, có nghĩa là
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
03 được khai báo là một ví dụ của lớp
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
04.

Với tuyên bố loại Python đó, Fastapi sẽ:

  • Đọc phần thân của yêu cầu là JSON
  • Chuyển đổi các loại tương ứng nếu cần
  • Xác thực dữ liệu và trả về một lỗi rõ ràng nếu nó không hợp lệ
  • Cung cấp cho bạn dữ liệu nhận được trong tham số ________ 103 vì bạn đã tuyên bố nó là loại
    # main.py
    
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    async def root():
        return {"message": "Hello World"}
    
    04, bạn cũng sẽ có tất cả các hỗ trợ của trình soạn thảo, với việc hoàn thành và kiểm tra loại cho tất cả các thuộc tính và loại của chúng
  • Tạo định nghĩa lược đồ JSON cho mô hình của bạn mà bạn cũng có thể sử dụng bất cứ nơi nào khác có ý nghĩa cho dự án của bạn

Bằng cách sử dụng gợi ý loại tiêu chuẩn với Pydantic, Fastapi giúp bạn xây dựng API có tất cả các thực tiễn tốt nhất này theo mặc định, với rất ít nỗ lực.

Tài liệu tự động với Pydantic

Các lược đồ JSON của các mô hình Pydantic của bạn sẽ là một phần của Openapi được tạo cho ứng dụng của bạn và sẽ được hiển thị trong tài liệu API tương tác:

Hướng dẫn rest api in python w3schools - phần còn lại api trong python w3schools

Bạn có thể thấy rằng các thuộc tính của

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
04 trong tài liệu API chính xác là những thuộc tính bạn đã khai báo với mô hình Pydantic của bạn.

Các lược đồ JSON này cũng sẽ được sử dụng trong tài liệu API bên trong mỗi thao tác đường dẫn cần chúng:

Hướng dẫn rest api in python w3schools - phần còn lại api trong python w3schools

Lưu ý rằng tất cả tài liệu tự động này dựa trên dữ liệu của bạn, sử dụng các mô hình Pydantic của bạn.

Hỗ trợ biên tập, tự động hoàn thành và kiểm tra loại

Trong trình soạn thảo của bạn, bên trong chức năng của bạn, bạn sẽ nhận được gợi ý loại và hoàn thành ở mọi nơi. Điều này sẽ xảy ra nếu bạn nhận được

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [28720]
INFO:     Started server process [28722]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
7 thay vì mô hình Pydantic:

Hướng dẫn rest api in python w3schools - phần còn lại api trong python w3schools

Bằng cách này, bạn có thể kích hoạt tự động hoàn thành cho tất cả dữ liệu của mình.

Bạn cũng nhận được kiểm tra lỗi cho các hoạt động loại không chính xác:

Hướng dẫn rest api in python w3schools - phần còn lại api trong python w3schools

Trong trường hợp này, bạn không thể tổng hợp

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
4 với
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
9 và vì trình soạn thảo biết các loại đó, nó có thể cảnh báo bạn rằng bạn có lỗi trong mã của mình. Đây không phải là tình cờ: toàn bộ khung được xây dựng xung quanh thiết kế đó. Nó đã được kiểm tra kỹ lưỡng ở giai đoạn thiết kế, trước khi thực hiện, để đảm bảo nó sẽ hoạt động với tất cả các biên tập viên. Thậm chí còn có một số thay đổi đối với chính Pydantic để hỗ trợ tính năng này.

Các ảnh chụp màn hình trước đó được chụp với mã Visual Studio. Nhưng bạn sẽ nhận được cùng một hỗ trợ biên tập viên với Pycharm và hầu hết các biên tập viên Python khác:

Hướng dẫn rest api in python w3schools - phần còn lại api trong python w3schools

Nếu bạn sử dụng Pycharm làm trình chỉnh sửa của mình, thì bạn có thể sử dụng plugin Pycharm Pydantic để cải thiện hỗ trợ trình soạn thảo của bạn. Và nếu bạn sử dụng mã VS, thì bạn sẽ có được trải nghiệm phát triển tốt nhất với Pylance.

Sử dụng mô hình Pydantic

Bên trong hàm, bạn có thể truy cập trực tiếp tất cả các thuộc tính của đối tượng mô hình:

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
9

Tham số

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
03 được khai báo là một thể hiện của lớp
# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
04 và Fastapi sẽ đảm bảo rằng bạn nhận được chính xác trong chức năng của mình thay vì từ điển hoặc một cái gì đó khác.

Yêu cầu các thông số cơ thể và đường dẫn

Bạn có thể khai báo tham số đường dẫn và thân yêu cầu cùng một lúc.

Fastapi sẽ nhận ra rằng các tham số hàm khớp với các tham số đường dẫn nên được lấy từ đường dẫn và các tham số hàm được tuyên bố là các mô hình Pydantic nên được lấy từ thân yêu cầu:

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [28720]
INFO:     Started server process [28722]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
0

Bằng cách này, bạn có thể khai báo các tham số đường dẫn và các cơ quan yêu cầu JSON và Fastapi sẽ chăm sóc tất cả các xác thực dữ liệu, tuần tự hóa và tài liệu cho bạn. Bạn có thể xác minh nó bằng cách truy cập cùng một tài liệu API tại

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
15 hoặc bằng cách sử dụng các công cụ khác như Postman với giao diện đồ họa hoặc Curl trong dòng lệnh.

Theo cách tương tự, bạn có thể khai báo các cơ quan yêu cầu phức tạp hơn, như danh sách và các loại dữ liệu yêu cầu khác, như tham số truy vấn, cookie, tiêu đề, đầu vào hình thức, tệp, v.v.

Tìm hiểu thêm về fastapi

Đến thời điểm này, bạn đã biết rất nhiều về Fastapi và cách sử dụng nó để tạo API mạnh mẽ và sẵn sàng sản xuất.

Nhưng có rất nhiều điều mà bạn có thể học được:

  • Các tham số truy vấn để tùy chỉnh một yêu cầu
  • Tiêm phụ thuộc để xử lý logic có thể tái sử dụng cho quyền, các phiên cơ sở dữ liệu và các phiên khác
  • Các tiện ích bảo mật để tích hợp xác thực và ủy quyền dựa trên các tiêu chuẩn
  • Nhiệm vụ nền cho các hoạt động đơn giản như gửi thông báo email
  • $ uvicorn main:app --reload
    
    INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
    
    1 và
    # main.py
    
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    async def root():
        return {"message": "Hello World"}
    
    17 để hỗ trợ đồng thời và cải thiện hiệu suấtconcurrency and improve performance
  • WebSockets cho các trường hợp sử dụng nâng cao yêu cầu giao tiếp thời gian thực
  • Các ứng dụng lớn hơn trong nhiều tệp

Fastapi có thể bao gồm hầu hết các trường hợp sử dụng cần thiết cho các khung back-end, ngay cả những trường hợp không hoàn toàn API. Bạn có thể đi sâu hơn vào tài liệu để giải quyết trường hợp sử dụng cụ thể của bạn.

Fastapi dựa trên các tính năng Python hiện đại và bạn cũng có thể tận dụng tối đa Fastapi bằng cách tìm hiểu thêm về các tính năng đó. Kiểm tra bắt đầu với các tính năng Async trong Python và Async IO trong Python: Một hướng dẫn hoàn chỉnh để tìm hiểu thêm về lập trình không đồng bộ. Bạn cũng có thể kiểm tra kiểm tra loại Python (hướng dẫn) để nhận tất cả các lợi ích truyền thống từ các gợi ý loại trong mã của bạn.

Sự kết luận

Trong hướng dẫn này, bạn đã tìm hiểu về Fastapi và cách sử dụng nó để tạo API sẵn sàng sản xuất có các thực tiễn tốt nhất theo mặc định trong khi cung cấp trải nghiệm phát triển tốt nhất có thể. Bạn đã học được cách:FastAPI and how to use it to create production-ready APIs that have best practices by default while providing the best developer experience possible. You learned how to:

  • Sử dụng tham số đường dẫn để có đường dẫn URL duy nhất cho mỗi mụcpath parameters to get a unique URL path per item
  • Nhận dữ liệu JSON trong các yêu cầu của bạn bằng Pydanticpydantic
  • Sử dụng các thực tiễn tốt nhất API như xác thực, tuần tự hóa và tài liệuvalidation, serialization, and documentation
  • Tiếp tục tìm hiểu về Fastapi và Pydantic cho các trường hợp sử dụng khác nhauFastAPI and pydantic for different use cases

Bây giờ bạn đã sẵn sàng để bắt đầu tạo API hiệu suất cao của riêng bạn cho các dự án của bạn. Nếu bạn muốn đi sâu hơn vào thế giới của Fastapi, thì bạn có thể làm theo hướng dẫn sử dụng chính thức trong tài liệu Fastapi.

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem nó cùng với hướng dẫn bằng văn bản để làm sâu sắc thêm sự hiểu biết của bạn: Python Rest Apis với Fastapi This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Python REST APIs With FastAPI

Làm thế nào để bạn gọi một API trong Python?

Thực hiện cuộc gọi API của bạn..
def get_data (tự, API):.
phản hồi = requests.get (f "{api}").
Nếu phản hồi.status_code == 200:.
In ("thành công đã tìm nạp dữ liệu").
self.formatted_print(response.json()).
print (f "Hello person, có {respons.status_code} lỗi với yêu cầu của bạn").

Là yêu cầu được xây dựng trong Python?

Yêu cầu là một trong những thư viện Python phổ biến nhất không được bao gồm trong Python.not included with Python.

Làm cách nào để nhận được phản hồi HTTP trong Python?

Phản hồi...
Nhập yêu cầu ..
Trả lời = Yêu cầu.Nhận ("http://www.google.com").
In ("Mã phản hồi:", Phản hồi. Status_Code).
In ("Phản hồi được định dạng dưới dạng văn bản:", Phản hồi. ...
In ("Phản hồi được định dạng bằng byte:", Phản hồi. ....
In ("Tiêu đề phản hồi:", Phản hồi ..

Việc sử dụng các yêu cầu trong Python là gì?

Mô -đun yêu cầu cho phép bạn gửi các yêu cầu HTTP bằng Python.Yêu cầu HTTP trả về một đối tượng phản hồi với tất cả dữ liệu phản hồi (nội dung, mã hóa, trạng thái, v.v.).allows you to send HTTP requests using Python. The HTTP request returns a Response Object with all the response data (content, encoding, status, etc).