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 এর শক্তিশালী লাইব্রেরি সমর্থনে, আপনি সহজেই ওয়েব সার্ভিস এবং রিয়েল-টাইম অ্যাপ্লিকেশন তৈরি করতে সক্ষম হবেন।
Read more