RESTful API Development এবং WebSocket Handling

Computer Programming - এফ শার্প প্রোগ্রামিং (F# Programming) - Web Development with F# (ওয়েব ডেভেলপমেন্ট)
128

RESTful API Development এবং WebSocket Handling

RESTful API এবং WebSocket হল ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে ব্যবহৃত দুটি গুরুত্বপূর্ণ প্রযুক্তি। RESTful API ডেভেলপমেন্ট ক্লায়েন্ট এবং সার্ভারের মধ্যে স্ট্যান্ডার্ড HTTP প্রোটোকল ব্যবহার করে যোগাযোগের জন্য ব্যবহৃত হয়, যেখানে WebSocket একটি full-duplex, ইন্টারেক্টিভ যোগাযোগের জন্য ব্যবহৃত হয়, যা ক্লায়েন্ট এবং সার্ভারের মধ্যে রিয়েল-টাইম ডেটা ট্রান্সফার সমর্থন করে।

এখানে আমরা F# ব্যবহার করে RESTful API তৈরি এবং WebSocket হ্যান্ডলিং করার উদাহরণ দেখব।


১. RESTful API Development in F#

F# তে ASP.NET Core ব্যবহারের মাধ্যমে RESTful API তৈরি করা যায়। এটি খুবই জনপ্রিয় এবং শক্তিশালী একটি ওয়েব ফ্রেমওয়ার্ক যা .NET প্ল্যাটফর্মে RESTful সার্ভিস তৈরি করতে ব্যবহৃত হয়।

i. ASP.NET Core Web API Setup

প্রথমে, একটি নতুন ASP.NET Core Web API প্রজেক্ট তৈরি করা হবে:

dotnet new webapi -n MyRestApi
cd MyRestApi

এটি একটি নতুন API প্রজেক্ট তৈরি করবে। Program.fs এবং Startup.fs ফাইলগুলো এখানে থাকবে, যেগুলোর মধ্যে রুটিং এবং মডিউল কনফিগারেশন করা হয়।

ii. Creating a RESTful API Endpoint

এখন একটি সিম্পল API তৈরি করা হবে যা HTTP GET, POST, PUT, DELETE মেথডের মাধ্যমে কাজ করবে।

// Controller.fs
namespace MyRestApi

open Microsoft.AspNetCore.Mvc

[<ApiController>]
[<Route("api/[controller]")>]
type CalculatorController() =
    inherit ControllerBase()

    // GET: api/calculator
    [<HttpGet>]
    member this.Get() =
        "Welcome to the Calculator API"

    // POST: api/calculator/add
    [<HttpPost("add")>]
    member this.Add([<FromBody>] numbers: int list) =
        let sum = List.sum numbers
        sprintf "Sum: %d" sum

    // PUT: api/calculator
    [<HttpPut("multiply")>]
    member this.Multiply([<FromBody>] numbers: int list) =
        let product = List.fold (fun acc x -> acc * x) 1 numbers
        sprintf "Product: %d" product

    // DELETE: api/calculator
    [<HttpDelete("clear")>]
    member this.Clear() =
        "Cleared"

ব্যাখ্যা:

  • CalculatorController নামের একটি Controller তৈরি করা হয়েছে, যেখানে বিভিন্ন HTTP মেথডের মাধ্যমে API endpoint তৈরি করা হয়েছে:
    • GET মেথডে একটি ওয়েলকাম বার্তা প্রেরণ করা হচ্ছে।
    • POST মেথডে একটি সংখ্যার তালিকার যোগফল গণনা করা হচ্ছে।
    • PUT মেথডে সংখ্যাগুলির গুণফল গণনা করা হচ্ছে।
    • DELETE মেথডে একটি ক্লিয়ার বার্তা প্রেরণ করা হচ্ছে।

iii. Running the API

API চালানোর জন্য:

dotnet run

এটি API সার্ভার শুরু করবে এবং আপনি কনসোল অথবা ব্রাউজার থেকে অ্যাক্সেস করতে পারবেন। API ব্যবহার করার জন্য আপনি http://localhost:5000/api/calculator এ গেট রিকোয়েস্ট পাঠাতে পারবেন অথবা POST/PUT মেথড ব্যবহার করতে পারবেন।


২. WebSocket Handling in F#

WebSocket একটি প্রোটোকল যা ক্লায়েন্ট এবং সার্ভারের মধ্যে রিয়েল-টাইম, দ্বিমুখী যোগাযোগ প্রতিষ্ঠা করতে ব্যবহৃত হয়। WebSocket একটি স্ট্রিমিং প্রোটোকল, যা ওয়েব অ্যাপ্লিকেশনগুলোকে খুব দ্রুত এবং স্থিতিশীল যোগাযোগ করতে সক্ষম করে।

ASP.NET Core তে WebSocket হ্যান্ডলিং করা বেশ সহজ। এখানে একটি উদাহরণ দেখানো হবে যেখানে WebSocket ব্যবহার করে F# এ রিয়েল-টাইম ডেটা ট্রান্সফার করা হয়।

i. WebSocket Setup

প্রথমে ASP.NET Core WebSocket সার্ভার সেটআপ করতে হবে। এটি HTTP রিকোয়েস্টের মাধ্যমে WebSocket কানেকশন খুলে দেয়।

// Program.fs
namespace MyWebSocketApi

open Microsoft.AspNetCore.Builder
open Microsoft.Extensions.Hosting
open Microsoft.AspNetCore.Http
open System
open System.Threading.Tasks

let webSocketHandler (context: HttpContext) =
    task {
        if context.WebSockets.IsWebSocketRequest then
            let socket =! (context.WebSockets.AcceptWebSocketAsync())
            let buffer = ArraySegment<byte>(Array.zeroCreate 1024)
            let mutable socketConnected = true
            while socketConnected do
                let! result = socket.ReceiveAsync(buffer, CancellationToken.None)
                if result.MessageType = WebSocketMessageType.Close then
                    do! socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closing", CancellationToken.None)
                    socketConnected <- false
                else
                    let message = System.Text.Encoding.UTF8.GetString(buffer.Array, 0, result.Count)
                    printfn "Received message: %s" message
                    let sendMessage = "Echo: " + message
                    let sendBuffer = ArraySegment<byte>(System.Text.Encoding.UTF8.GetBytes(sendMessage))
                    do! socket.SendAsync(sendBuffer, WebSocketMessageType.Text, true, CancellationToken.None)
    }

let configureApp (app: IApplicationBuilder) =
    app.UseWebSockets()
    app.Run(fun context -> webSocketHandler context)

let configureServices (services: IServiceCollection) =
    services.AddRouting()

[<EntryPoint>]
let main argv =
    let hostBuilder = Host.CreateDefaultBuilder()
        .ConfigureWebHostDefaults(fun webHost ->
            webHost.Configure(configureApp).ConfigureServices(configureServices)
        )
    hostBuilder.Build().Run()
    0

ব্যাখ্যা:

  • এখানে webSocketHandler নামক একটি ফাংশন তৈরি করা হয়েছে, যা WebSocket কানেকশন গ্রহণ করে এবং ডেটা গ্রহণ ও পাঠানোর জন্য ব্যবহার করা হয়।
  • সার্ভার ক্লায়েন্টের কাছ থেকে ডেটা গ্রহণ করার পর, Echo করে পাঠাবে।
  • app.UseWebSockets() মাধ্যমে WebSocket কানেকশন এনাবল করা হয়েছে।

ii. Running WebSocket Server

এটি চালাতে, আপনার dotnet run কমান্ড ব্যবহার করতে হবে:

dotnet run

এখন WebSocket সার্ভার আপনার লোকালহোস্টের মাধ্যমে রিয়েল-টাইম যোগাযোগ গ্রহণ করবে।

iii. WebSocket Client

আপনি একটি WebSocket ক্লায়েন্টের মাধ্যমে যোগাযোগ করতে পারবেন। যেমন, JavaScript এ:

let socket = new WebSocket("ws://localhost:5000");
socket.onopen = () => {
    console.log("Connected to WebSocket");
    socket.send("Hello, server!");
};
socket.onmessage = (event) => {
    console.log("Message from server: " + event.data);
};
socket.onclose = () => {
    console.log("WebSocket connection closed");
};

ব্যাখ্যা:

  • JavaScript WebSocket API ব্যবহার করে আপনি WebSocket সার্ভারের সাথে কানেক্ট হতে পারবেন এবং তার সাথে রিয়েল-টাইম মেসেজ আদান-প্রদান করতে পারবেন।

উপসংহার

F# এ RESTful API এবং WebSocket Handling দুটি খুবই শক্তিশালী কৌশল, যা আপনাকে ওয়েব সার্ভিস এবং রিয়েল-টাইম অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে। ASP.NET Core ব্যবহার করে সহজে RESTful API ডেভেলপ করা যায় এবং WebSocket এর মাধ্যমে রিয়েল-টাইম ডেটা ট্রান্সফার করা যায়। F# এর কার্যকারিতা এবং .NET এর শক্তিশালী লাইব্রেরি সমর্থনে, আপনি সহজেই ওয়েব সার্ভিস এবং রিয়েল-টাইম অ্যাপ্লিকেশন তৈরি করতে সক্ষম হবেন।

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

Are you sure to start over?

Loading...