FastAPI তে JSON Response এবং Custom Response Formats খুবই সহজ এবং শক্তিশালী উপায়ে কনফিগার করা যায়। FastAPI স্বয়ংক্রিয়ভাবে JSON ফরম্যাটে রেসপন্স প্রদান করে, তবে আপনি কাস্টম রেসপন্স ফরম্যাটও ব্যবহার করতে পারেন।
এখানে JSON রেসপন্স এবং কাস্টম রেসপন্স ফরম্যাট তৈরি করার উপায় নিয়ে আলোচনা করা হবে।
JSON Response
FastAPI ডিফল্টভাবে JSON রেসপন্স প্রদান করে, যেহেতু এটি HTTP application/json কনটেন্ট টাইপের মাধ্যমে রেসপন্স ফেরত পাঠায়। আপনি কোনো ডাটা ফেরত দিলে FastAPI তা স্বয়ংক্রিয়ভাবে JSON-এ রূপান্তরিত করে রেসপন্স হিসেবে প্রদান করবে।
উদাহরণ: JSON Response
from fastapi import FastAPI
app = FastAPI()
@app.get("/json_response/")
def json_response():
return {"message": "This is a JSON response", "status": "success"}
এখানে, /json_response/ এন্ডপয়েন্টটি JSON রেসপন্স প্রদান করবে।
রেসপন্স উদাহরণ:
{
"message": "This is a JSON response",
"status": "success"
}
এই রেসপন্সের কনটেন্ট টাইপ application/json হবে এবং FastAPI এটি স্বয়ংক্রিয়ভাবে JSON ফরম্যাটে রূপান্তরিত করবে।
Custom Response Formats
যেহেতু FastAPI JSON রেসপন্সের জন্য ডিফল্টভাবে সেট করা থাকে, আপনি যদি কাস্টম রেসপন্স ফরম্যাট (যেমন, XML, HTML, Plain Text, ইত্যাদি) প্রয়োজন মনে করেন, তবে FastAPI তে এটি করতে পারা যায়। এর জন্য আপনি Response বা JSONResponse এর মতো কাস্টম রেসপন্স ক্লাস ব্যবহার করতে পারেন।
১. Text Response
আপনি যদি Plain Text রেসপন্স পাঠাতে চান, তবে PlainTextResponse ব্যবহার করতে পারেন।
from fastapi import FastAPI
from fastapi.responses import PlainTextResponse
app = FastAPI()
@app.get("/text_response/", response_class=PlainTextResponse)
def text_response():
return "This is a plain text response"
এখানে response_class=PlainTextResponse ব্যবহার করা হয়েছে যাতে রেসপন্স প্লেইন টেক্সট ফরম্যাটে ফিরে আসে।
রেসপন্স উদাহরণ:
This is a plain text response
২. HTML Response
HTML রেসপন্স পাঠানোর জন্য HTMLResponse ক্লাস ব্যবহার করা হয়। এটি HTML কনটেন্টকে প্রপারলি রেন্ডার করে ব্রাউজারে প্রদর্শন করবে।
from fastapi import FastAPI
from fastapi.responses import HTMLResponse
app = FastAPI()
@app.get("/html_response/", response_class=HTMLResponse)
def html_response():
html_content = """
<html>
<head>
<title>HTML Response</title>
</head>
<body>
<h1>This is an HTML response</h1>
</body>
</html>
"""
return html_content
এখানে response_class=HTMLResponse ব্যবহার করা হয়েছে, যা HTML ফরম্যাটে রেসপন্স প্রদান করবে।
রেসপন্স উদাহরণ (HTML):
<html>
<head>
<title>HTML Response</title>
</head>
<body>
<h1>This is an HTML response</h1>
</body>
</html>
৩. XML Response
FastAPI তে XML রেসপন্স কাস্টমভাবে তৈরি করতে Response ক্লাস ব্যবহার করা হয় এবং XML কনটেন্ট টাইপ সেট করা হয়।
from fastapi import FastAPI
from fastapi.responses import Response
app = FastAPI()
@app.get("/xml_response/")
def xml_response():
xml_content = """
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
"""
return Response(content=xml_content, media_type="application/xml")
এখানে, আমরা XML ডাটা ফেরত পাঠাতে Response ক্লাস ব্যবহার করেছি এবং কনটেন্ট টাইপ হিসেবে application/xml সেট করেছি।
রেসপন্স উদাহরণ (XML):
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Custom JSON Response
আপনি যদি কোনো JSON ডাটা কাস্টমাইজ করতে চান এবং তার সাথে অতিরিক্ত কনটেন্ট বা মেটাডেটা যোগ করতে চান, তাহলে JSONResponse ব্যবহার করতে পারেন।
from fastapi import FastAPI
from fastapi.responses import JSONResponse
app = FastAPI()
@app.get("/custom_json_response/")
def custom_json_response():
content = {"message": "This is a custom JSON response", "status": "success"}
return JSONResponse(content=content, headers={"X-Custom-Header": "CustomValue"})
এখানে, JSONResponse ক্লাস ব্যবহার করে কাস্টম JSON ডাটা এবং অতিরিক্ত header যোগ করা হয়েছে।
রেসপন্স:
{
"message": "This is a custom JSON response",
"status": "success"
}
Headers:
X-Custom-Header: CustomValue
Custom Status Codes
FastAPI-তে রেসপন্সের HTTP status code কাস্টমাইজ করা খুবই সহজ। আপনি status_code প্যারামিটার ব্যবহার করে রেসপন্সের স্ট্যাটাস কোড সেট করতে পারেন।
from fastapi import FastAPI
from fastapi.responses import JSONResponse
app = FastAPI()
@app.get("/status_code_example/")
def status_code_example():
content = {"message": "This is a custom status code response"}
return JSONResponse(content=content, status_code=201)
এখানে, status_code=201 ব্যবহার করে আমরা 201 Created স্ট্যাটাস কোড প্রদান করছি।
রেসপন্স:
{
"message": "This is a custom status code response"
}
Status Code: 201 (Created)
Response Model
FastAPI তে আপনি রেসপন্সের জন্য মডেল (যেমন Pydantic Model) ব্যবহার করতে পারেন, যা JSON ডাটাকে ভ্যালিডেট এবং ডকুমেন্ট করার জন্য সাহায্য করে।
from fastapi import FastAPI
from pydantic import BaseModel
from fastapi.responses import JSONResponse
app = FastAPI()
class ItemResponse(BaseModel):
item_name: str
item_price: float
@app.get("/item_response/", response_model=ItemResponse)
def item_response():
return JSONResponse(content={"item_name": "Laptop", "item_price": 1500.00})
এখানে, response_model ব্যবহার করা হয়েছে, যা API ডকুমেন্টেশন স্বয়ংক্রিয়ভাবে তৈরি করতে সাহায্য করে এবং রেসপন্স ডাটাকে ভ্যালিডেট করে।
রেসপন্স:
{
"item_name": "Laptop",
"item_price": 1500.00
}
FastAPI তে JSON Response এবং Custom Response Formats তৈরি করা সহজ এবং কার্যকর। FastAPI আপনাকে JSON, HTML, Text, XML, এবং অন্যান্য কাস্টম রেসপন্স ফরম্যাট তৈরি এবং কনফিগার করার জন্য অনেক সুবিধা প্রদান করে। আপনি সহজেই API রেসপন্স কাস্টমাইজ করতে পারেন এবং ইনপুট ডাটা ফরম্যাটের ওপর ভিত্তি করে বিভিন্ন ধরনের রেসপন্স প্রদান করতে পারেন।
Read more