Skip to main content
FastrAPI provides parameter classes for extracting and validating different types of request data. These classes follow the same pattern as FastAPI’s parameter classes.

Overview

Query

Extract URL query parameters

Path

Extract path parameters

Body

Extract request body data

Header

Extract HTTP headers

Cookie

Extract cookies

Form

Extract form data

File

Extract file uploads

Query

Extract and validate URL query parameters.

Parameters

default
any
default:"None"
Default value if parameter is not provided
alias
string
default:"None"
Alternative name for the parameter in the URL
title
string
default:"None"
Title for API documentation
description
string
default:"None"
Description for API documentation
gt
float
default:"None"
Greater than validation for numeric values
ge
float
default:"None"
Greater than or equal validation for numeric values
lt
float
default:"None"
Less than validation for numeric values
le
float
default:"None"
Less than or equal validation for numeric values
min_length
int
default:"None"
Minimum length for string values
max_length
int
default:"None"
Maximum length for string values
pattern
string
default:"None"
Regex pattern for string validation
deprecated
bool
default:"None"
Mark parameter as deprecated in API documentation
include_in_schema
bool
default:"true"
Whether to include in OpenAPI schema
examples
any
default:"None"
Example values for API documentation

Example

from fastrapi import FastrAPI, Query

app = FastrAPI()

@app.get("/items")
def get_items(
    skip: int = Query(0, ge=0, description="Number of items to skip"),
    limit: int = Query(10, ge=1, le=100, description="Number of items to return"),
    search: str = Query(None, min_length=1, max_length=50)
):
    return {"skip": skip, "limit": limit, "search": search}

Path

Extract and validate path parameters from URL paths.

Parameters

Path accepts the same parameters as Query (see above).

Example

from fastrapi import FastrAPI, Path

app = FastrAPI()

@app.get("/items/{item_id}")
def get_item(
    item_id: int = Path(..., ge=1, description="The ID of the item")
):
    return {"item_id": item_id}

Body

Extract and validate request body data.

Parameters

default
any
default:"None"
Default value if body is not provided
embed
bool
default:"False"
Whether to expect the body to be embedded under a key
media_type
string
default:"application/json"
Expected media type of the body
alias
string
default:"None"
Alternative name for the body parameter
title
string
default:"None"
Title for API documentation
description
string
default:"None"
Description for API documentation

Example

from fastrapi import FastrAPI, Body
from pydantic import BaseModel

app = FastrAPI()

class Item(BaseModel):
    name: str
    price: float

@app.post("/items")
def create_item(
    item: Item = Body(..., description="Item to create")
):
    return {"item": item}
Extract and validate HTTP headers.

Parameters

Header accepts similar parameters to Query for validation.

Example

from fastrapi import FastrAPI, Header

app = FastrAPI()

@app.get("/")
def read_items(
    user_agent: str = Header(None, description="Client user agent"),
    x_api_key: str = Header(..., alias="X-API-Key")
):
    return {"user_agent": user_agent, "api_key": x_api_key}
Extract and validate cookies.

Parameters

Cookie accepts similar parameters to Query for validation.

Example

from fastrapi import FastrAPI, Cookie

app = FastrAPI()

@app.get("/")
def read_cookies(
    session_id: str = Cookie(None, description="Session identifier")
):
    return {"session_id": session_id}

Form

Extract form data from application/x-www-form-urlencoded or multipart/form-data requests.

Parameters

Form accepts similar parameters to Query for validation.

Example

from fastrapi import FastrAPI, Form

app = FastrAPI()

@app.post("/login")
def login(
    username: str = Form(..., description="Username"),
    password: str = Form(..., description="Password")
):
    return {"username": username}

File

Extract file uploads from multipart form data.

Parameters

default
any
default:"None"
Default value if file is not provided
description
string
default:"None"
Description for API documentation

Example

from fastrapi import FastrAPI, File, UploadFile

app = FastrAPI()

@app.post("/upload")
async def upload_file(
    file: UploadFile = File(..., description="File to upload")
):
    contents = await file.read()
    return {
        "filename": file.filename,
        "content_type": file.content_type,
        "size": len(contents)
    }

Validation

All parameter classes support validation constraints:
  • Numeric validation: gt, ge, lt, le
  • String validation: min_length, max_length, pattern
  • Documentation: title, description, examples, deprecated
When validation fails, FastrAPI automatically returns a 422 Unprocessable Entity response with details about the validation errors.

Request handling

Understand request processing

Pydantic validation

Use Pydantic models for validation

UploadFile

Handle file uploads

Dependencies

Dependency injection system

Build docs developers (and LLMs) love