HTML Response এবং Streaming Response তৈরি করা

Web Development - ফাস্টএপিআই (FastAPI) - FastAPI এর Response Management
212

FastAPI তে HTML Response এবং Streaming Response তৈরি করা খুবই সহজ এবং কার্যকর। HTML Response সাধারণত ওয়েব পেজ রেন্ডার করার জন্য ব্যবহৃত হয়, এবং Streaming Response ব্যবহার করা হয় ডাটা ধীরে ধীরে পাঠানোর জন্য, যেমন বড় ফাইল বা ডাটা সেন্টারের জন্য, যা একে একে পাঠানো হয়।


HTML Response তৈরি করা

FastAPI তে HTML Response তৈরি করতে, HTMLResponse ব্যবহার করা হয়। আপনি HTML কোড সরাসরি রিটার্ন করতে পারেন অথবা Jinja2 টেমপ্লেট ইঞ্জিন ব্যবহার করে ডাইনামিক HTML পেজ তৈরি করতে পারেন।

উদাহরণ: HTML Response সরাসরি পাঠানো

from fastapi import FastAPI
from fastapi.responses import HTMLResponse

app = FastAPI()

@app.get("/", response_class=HTMLResponse)
def get_home_page():
    html_content = """
    <html>
        <head><title>My FastAPI App</title></head>
        <body>
            <h1>Welcome to FastAPI!</h1>
            <p>This is an HTML response.</p>
        </body>
    </html>
    """
    return html_content

এখানে, HTMLResponse ব্যবহার করে একটি সরাসরি HTML পেজ রিটার্ন করা হয়েছে।

রেসপন্স:

<html>
    <head><title>My FastAPI App</title></head>
    <body>
        <h1>Welcome to FastAPI!</h1>
        <p>This is an HTML response.</p>
    </body>
</html>

Jinja2 টেমপ্লেট ইঞ্জিন ব্যবহার করা

FastAPI তে ডাইনামিক HTML পেজ তৈরি করতে Jinja2 টেমপ্লেট ইঞ্জিন ব্যবহার করা যায়। এটি আপনাকে টেমপ্লেটের মধ্যে ভ্যারিয়েবল ইন্সার্ট করার সুযোগ দেয় এবং HTML কোডের পুনঃব্যবহারযোগ্যতা বাড়ায়।

উদাহরণ: Jinja2 ব্যবহার করে HTML Response তৈরি

প্রথমে jinja2 ইনস্টল করতে হবে:

pip install jinja2

তারপর, Jinja2Templates ব্যবহার করে HTML পেজ তৈরি করা হয়।

from fastapi import FastAPI
from fastapi.templating import Jinja2Templates
from fastapi.responses import HTMLResponse
from starlette.requests import Request

app = FastAPI()

# টেমপ্লেট ডিরেক্টরি
templates = Jinja2Templates(directory="templates")

@app.get("/greet/{name}", response_class=HTMLResponse)
def greet(request: Request, name: str):
    return templates.TemplateResponse("greet.html", {"request": request, "name": name})

এখানে, greet.html টেমপ্লেট ব্যবহার করা হচ্ছে, যা একটি ডাইনামিক HTML পেজ তৈরি করবে।

greet.html টেমপ্লেট উদাহরণ (templates/greet.html):

<!DOCTYPE html>
<html>
    <head><title>Greeting Page</title></head>
    <body>
        <h1>Hello, {{ name }}!</h1>
        <p>Welcome to FastAPI with Jinja2 template engine.</p>
    </body>
</html>

এখানে, {{ name }} হলো একটি টেমপ্লেট ভ্যারিয়েবল যা প্যারামিটার থেকে ডাইনামিকভাবে আসবে।

রিকোয়েস্ট উদাহরণ:

GET /greet/John

রেসপন্স:

<!DOCTYPE html>
<html>
    <head><title>Greeting Page</title></head>
    <body>
        <h1>Hello, John!</h1>
        <p>Welcome to FastAPI with Jinja2 template engine.</p>
    </body>
</html>

Streaming Response তৈরি করা

Streaming Response এমন একটি রেসপন্স, যেখানে ডাটা ধীরে ধীরে পাঠানো হয়, যা সাধারণত বড় ফাইল বা ডাটা সেন্টার থেকে আসা ডাটার জন্য ব্যবহৃত হয়। FastAPI তে StreamingResponse ক্লাস ব্যবহার করে এই ধরণের রেসপন্স তৈরি করা যায়।

উদাহরণ: File Streaming Response

from fastapi import FastAPI
from fastapi.responses import StreamingResponse
import io

app = FastAPI()

@app.get("/streamfile")
def stream_file():
    # একটি ছোট ডাটা স্ট্রিম তৈরি করা
    data = b"Hello, this is a large file content.\n" * 10000
    file_like_object = io.BytesIO(data)
    
    # StreamingResponse ব্যবহার করে ফাইল স্ট্রিম পাঠানো
    return StreamingResponse(file_like_object, media_type="text/plain")

এখানে, io.BytesIO ব্যবহার করে একটি ফাইলের মত একটি স্ট্রিম তৈরি করা হয়েছে, যা StreamingResponse এর মাধ্যমে পাঠানো হচ্ছে।

রিকোয়েস্ট উদাহরণ:

GET /streamfile

রেসপন্স:

Hello, this is a large file content.
Hello, this is a large file content.
...

এখানে, স্ট্রিমিং রেসপন্সের মাধ্যমে বড় ফাইল বা ডাটা পাঠানো হচ্ছে, যা ধীরে ধীরে কনজিউমারকে পাঠানো হয়।


File Streaming from Disk

আপনি ফাইল স্ট্রিম করতে পারেন যা ডিস্ক থেকে সরাসরি পাঠানো হবে।

from fastapi import FastAPI
from fastapi.responses import StreamingResponse
import os

app = FastAPI()

@app.get("/streamfile/{file_name}")
def stream_file(file_name: str):
    file_path = f"files/{file_name}"  # files ডিরেক্টরির মধ্যে ফাইল
    file_like_object = open(file_path, mode="rb")
    
    return StreamingResponse(file_like_object, media_type="application/octet-stream")

এখানে, ফাইল ডিস্ক থেকে সরাসরি পড়ে স্ট্রিম করা হচ্ছে।

রিকোয়েস্ট উদাহরণ:

GET /streamfile/example.txt

রেসপন্স:

যে ফাইলটি আপলোড করা হয়েছে, সেটি ধীরে ধীরে স্ট্রিম করা হবে।


FastAPI তে HTML Response এবং Streaming Response তৈরি করা সহজ এবং কার্যকর। আপনি Jinja2 টেমপ্লেট ইঞ্জিন ব্যবহার করে ডাইনামিক HTML পেজ তৈরি করতে পারেন, এবং StreamingResponse ব্যবহার করে বড় ফাইল বা ডাটা স্ট্রিমিং করতে পারেন। এই বৈশিষ্ট্যগুলি আপনাকে আরও প্রোফেশনাল এবং স্কেলেবল অ্যাপ্লিকেশন তৈরি করতে সহায়ক হবে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...