@jasen
In FastAPI, you can restrict the Content-Type by using the Dependency Injection system. Here's an example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
from fastapi import FastAPI, Header, HTTPException, Depends app = FastAPI() def validate_content_type(content_type: str = Header(...)): allowed_content_types = ["application/json", "application/xml"] if content_type not in allowed_content_types: raise HTTPException(status_code=415, detail="Unsupported Media Type") return content_type @app.post("/items/") async def create_item(content_type: str = Depends(validate_content_type)): return {"content_type": content_type} |
In this example, the validate_content_type
function is a dependency that checks if the Content-Type header in the request is allowed or not. If the Content-Type is not in the list of allowed content types, it will raise an HTTPException with a status code of 415 (Unsupported Media Type).
You can then apply this dependency to the routes that you want to restrict the Content-Type by using the Depends
function. In the create_item
route, the content_type
parameter is passed through the validate_content_type
dependency, which ensures that the Content-Type header is allowed before the request is processed.