Làm cách nào để chuyển tham số trong url trong python?

Khi bạn khai báo các tham số chức năng khác không phải là một phần của tham số đường dẫn, chúng sẽ tự động được hiểu là tham số "truy vấn"

from fastapi import FastAPI

app = FastAPI()

fake_items_db = [{"item_name": "Foo"}, {"item_name": "Bar"}, {"item_name": "Baz"}]


@app.get("/items/")
async def read_item(skip: int = 0, limit: int = 10):
    return fake_items_db[skip : skip + limit]

Truy vấn là tập hợp các cặp khóa-giá trị theo sau

http://127.0.0.1:8000/items/
3 trong URL, được phân tách bằng ký tự
http://127.0.0.1:8000/items/
4

Ví dụ, trong URL

http://127.0.0.1:8000/items/?skip=0&limit=10

các tham số truy vấn là

  • http://127.0.0.1:8000/items/
    
    5. với giá trị là
    http://127.0.0.1:8000/items/
    
    6
  • http://127.0.0.1:8000/items/
    
    7. với giá trị là
    http://127.0.0.1:8000/items/
    
    8

Vì chúng là một phần của URL nên chúng là các chuỗi "tự nhiên"

Nhưng khi bạn khai báo chúng với các kiểu Python (trong ví dụ trên, là

http://127.0.0.1:8000/items/
9), chúng sẽ được chuyển đổi thành kiểu đó và được xác thực theo kiểu đó

Tất cả quy trình tương tự áp dụng cho tham số đường dẫn cũng áp dụng cho tham số truy vấn

  • Hỗ trợ biên tập viên (rõ ràng)
  • Dữ liệu "phân tích cú pháp"
  • Xác nhận dữ liệu
  • tài liệu tự động

Mặc định¶

Vì tham số truy vấn không phải là phần cố định của đường dẫn nên chúng có thể là tùy chọn và có thể có giá trị mặc định

Trong ví dụ trên, chúng có giá trị mặc định là

http://127.0.0.1:8000/items/?skip=0&limit=10
0 và
http://127.0.0.1:8000/items/?skip=0&limit=10
1

Vì vậy, đi đến URL

http://127.0.0.1:8000/items/

sẽ giống như đi đến

http://127.0.0.1:8000/items/?skip=0&limit=10

Nhưng nếu bạn đi đến, ví dụ

http://127.0.0.1:8000/items/
3

Các giá trị tham số trong hàm của bạn sẽ là

  • http://127.0.0.1:8000/items/?skip=0&limit=10
    
    2. bởi vì bạn đã đặt nó trong URL
  • http://127.0.0.1:8000/items/?skip=0&limit=10
    
    1. bởi vì đó là giá trị mặc định

Thông số tùy chọn¶

Theo cách tương tự, bạn có thể khai báo các tham số truy vấn tùy chọn, bằng cách đặt mặc định của chúng thành

http://127.0.0.1:8000/items/?skip=0&limit=10
4

Trăn 3. 6 trở lênPython 3. 10 trở lên

http://127.0.0.1:8000/items/
7

http://127.0.0.1:8000/items/
8

Trong trường hợp này, tham số chức năng

http://127.0.0.1:8000/items/?skip=0&limit=10
5 sẽ là tùy chọn và sẽ là
http://127.0.0.1:8000/items/?skip=0&limit=10
4 theo mặc định

Kiểm tra

Cũng lưu ý rằng FastAPI đủ thông minh để nhận thấy rằng tham số đường dẫn

http://127.0.0.1:8000/items/?skip=0&limit=10
7 là tham số đường dẫn và
http://127.0.0.1:8000/items/?skip=0&limit=10
5 thì không, vì vậy, đây là tham số truy vấn

Chuyển đổi loại tham số truy vấn¶

Bạn cũng có thể khai báo các loại

http://127.0.0.1:8000/items/?skip=0&limit=10
9 và chúng sẽ được chuyển đổi

Trăn 3. 6 trở lênPython 3. 10 trở lên

http://127.0.0.1:8000/items/
4

http://127.0.0.1:8000/items/
5

Trong trường hợp này, nếu bạn đi đến

http://127.0.0.1:8000/items/
6

hoặc

http://127.0.0.1:8000/items/?skip=0&limit=10
0

hoặc

http://127.0.0.1:8000/items/?skip=0&limit=10
1

hoặc

http://127.0.0.1:8000/items/?skip=0&limit=10
2

hoặc

http://127.0.0.1:8000/items/?skip=0&limit=10
3

hoặc bất kỳ biến thể kiểu chữ nào khác (chữ hoa, chữ cái đầu tiên viết hoa, v.v.), hàm của bạn sẽ thấy tham số

http://127.0.0.1:8000/items/
30 với giá trị
http://127.0.0.1:8000/items/?skip=0&limit=10
9 là
http://127.0.0.1:8000/items/
32. Nếu không thì là
http://127.0.0.1:8000/items/
33

Nhiều đường dẫn và tham số truy vấn¶

Bạn có thể khai báo nhiều tham số đường dẫn và tham số truy vấn cùng lúc, FastAPI biết cái nào là cái nào

Và bạn không cần phải khai báo chúng theo bất kỳ thứ tự cụ thể nào

Họ sẽ được phát hiện theo tên

Trăn 3. 6 trở lênPython 3. 10 trở lên

http://127.0.0.1:8000/items/?skip=0&limit=10
4

http://127.0.0.1:8000/items/?skip=0&limit=10
5

Các tham số truy vấn bắt buộc¶

Khi bạn khai báo một giá trị mặc định cho các tham số không phải đường dẫn (hiện tại chúng ta mới chỉ thấy các tham số truy vấn) thì không cần thiết

Nếu bạn không muốn thêm một giá trị cụ thể mà chỉ muốn thêm một giá trị tùy chọn, hãy đặt giá trị mặc định là

http://127.0.0.1:8000/items/?skip=0&limit=10
4

Nhưng khi bạn muốn thực hiện một tham số truy vấn bắt buộc, bạn có thể không khai báo bất kỳ giá trị mặc định nào

http://127.0.0.1:8000/items/?skip=0&limit=10
6

Ở đây tham số truy vấn

http://127.0.0.1:8000/items/
35 là tham số truy vấn bắt buộc thuộc loại
http://127.0.0.1:8000/items/
36

Nếu bạn mở trong trình duyệt của mình một URL như

http://127.0.0.1:8000/items/?skip=0&limit=10
7

mà không thêm tham số bắt buộc

http://127.0.0.1:8000/items/
35, bạn sẽ thấy lỗi như

http://127.0.0.1:8000/items/?skip=0&limit=10
8

http://127.0.0.1:8000/items/
35 là tham số bắt buộc nên bạn cần đặt tham số này trong URL

http://127.0.0.1:8000/items/?skip=0&limit=10
9

cái này sẽ hiệu quả

http://127.0.0.1:8000/items/
0

Và tất nhiên, bạn có thể xác định một số tham số theo yêu cầu, một số có giá trị mặc định và một số hoàn toàn tùy chọn.

Chúng tôi có thể chuyển tham số URL trong yêu cầu GET không?

Tham số GET (còn gọi là tham số URL hoặc chuỗi truy vấn) được sử dụng khi ứng dụng khách, chẳng hạn như trình duyệt, yêu cầu một tài nguyên cụ thể từ máy chủ web bằng giao thức HTTP . Các tham số này thường là các cặp tên-giá trị, được phân tách bằng dấu bằng =. Chúng có thể được sử dụng cho nhiều thứ, như được giải thích bên dưới.

Phương pháp nào sẽ chuyển giá trị qua URL?

Gửi giá trị biểu mẫu thông qua phương thức GET . Vì vậy, chúng tôi có thể sử dụng một biểu mẫu để tạo URL có biến và dữ liệu bằng cách lấy thông tin đầu vào từ người dùng.