Path Parameters
Path parameters (also called URL variables) are values embedded in the URL path. JustAPI extracts them automatically based on your function signature.
Basic Path Parameters
Section titled “Basic Path Parameters”from justapi import JustAPIApp
app = JustAPIApp()
@app.get("/users/{user_id}")def get_user(user_id: int): return {"user_id": user_id}
@app.get("/items/{item_id}")def get_item(item_id: str): return {"item_id": item_id}The {user_id} and {item_id} in the path are matched to the function parameters. JustAPI validates the type automatically:
/users/42works —user_idis42(int)/users/fooreturns a validation error —"foo"is not a valid integer
Data Conversion
Section titled “Data Conversion”JustAPI converts path parameters from strings to the declared Python type:
@app.get("/items/{item_id}")def get_item(item_id: int): # item_id is an int, not a string return {"item_id": item_id, "double": item_id * 2}/items/3returns{"item_id": 3, "double": 6}/items/3.14returns a validation error —"3.14"is not a validint
Supported Types
Section titled “Supported Types”| Type | Example URL | Value |
|---|---|---|
int |
/items/42 |
42 |
float |
/items/3.14 |
3.14 |
str |
/items/foo |
"foo" |
bool |
/items/true |
True |
UUID |
/items/550e8400-... |
UUID(...) |
Enum |
/models/alexnet |
ModelName.alexnet |
Predefined Values with Enum
Section titled “Predefined Values with Enum”Restrict a path parameter to a fixed set of values using Python Enum:
from enum import Enumfrom justapi import JustAPIApp
class ModelName(str, Enum): alexnet = "alexnet" resnet = "resnet" lenet = "lenet"
app = JustAPIApp()
@app.get("/models/{model_name}")def get_model(model_name: ModelName): if model_name is ModelName.alexnet: return {"model_name": model_name, "message": "Deep Learning FTW!"} return {"model_name": model_name, "message": "Have some residuals"}The OpenAPI docs will show the available values in a dropdown.
Path Parameters Containing Paths
Section titled “Path Parameters Containing Paths”For parameters that must match a full path (like file paths), use the :path converter:
@app.get("/files/{file_path:path}")def read_file(file_path: str): return {"file_path": file_path}This matches URLs like /files/home/user/file.txt.
Order Matters
Section titled “Order Matters”When defining routes, put fixed paths before parameterized paths:
@app.get("/users/me")def read_user_me(): return {"user_id": "the current user"}
@app.get("/users/{user_id}")def read_user(user_id: str): return {"user_id": user_id}If /users/{user_id} were declared first, it would also match /users/me.
- Use
{parameter_name}in the path to declare a path parameter. - Declare the type in your function signature — JustAPI validates and converts it.
- Use
Enumfor predefined values. - Use
:pathfor parameters containing full paths. - Put fixed routes before parameterized routes.
See Also
Section titled “See Also”- Path Parameters & Numeric Validations — add
ge,le,gt,ltconstraints - Query Parameters — parameters in the query string
- Request Body — JSON request bodies