হাসিব, দারুণ একটা টপিক নিয়ে আমরা এখন আলোচনা করছি। একজন ডেভেলপার হিসেবে তোমার ক্যারিয়ারের ৮০% সময় কাটবে এই API নিয়ে কাজ করে। ইনস্ট্রাক্টর এখানে খুব সুন্দর করে API-এর বেসিক থেকে শুরু করে এর বিভিন্ন ধরন বুঝিয়ে দিয়েছেন।

চলো একজন টেক লিডের দৃষ্টিভঙ্গি থেকে এই লেকচারটাকে ব্যবচ্ছেদ (Anatomy) করি।


১. Topic Overview: API - সফটওয়্যারের সেতুবন্ধন

এই লেকচারে যা কভার করা হয়েছে:

  • API কী: এটি এমন একটি ইন্টারফেস যা দুটি ভিন্ন সফটওয়্যারকে একে অপরের সাথে কথা বলতে সাহায্য করে।
  • কিভাবে কাজ করে: Client-Server মডেলের মাধ্যমে রিকোয়েস্ট এবং রেসপন্স আদান-প্রদান।
  • API-এর প্রকারভেদ: Web API ছাড়াও Library, OS এবং Hardware API নিয়ে ধারণা।
  • Web API-এর প্রোটোকল: REST, SOAP, GraphQL এবং gRPC-এর নাম উল্লেখ করা হয়েছে।

২. Detailed Breakdown: ১-১ অ্যানালাইসিস

ক) API-এর সংজ্ঞা ও কাজ

API মানে Application Programming Interface। সহজ ভাষায়, এটি একটি চুক্তিনামা (Contract)। ধরো, তুমি একটি রেস্টুরেন্টে গিয়েছো। তুমি (Client) খাবার অর্ডার দিলে, ওয়েটার (API) সেই অর্ডার কিচেনে (Server) নিয়ে গেল। কিচেন খাবার তৈরি করে ওয়েটারকে দিল এবং ওয়েটার সেটা তোমার কাছে (Response) নিয়ে এল। কিচেনের ভেতরে কীভাবে রান্না হচ্ছে, সেটা তোমার জানার দরকার নেই—এটাই হলো Abstraction

খ) কেন API গুরুত্বপূর্ণ?

১. Integration: এক অ্যাপের সাথে অন্য অ্যাপের সংযোগ (যেমন: উবার অ্যাপে গুগল ম্যাপস)। ২. Speed: চাকা নতুন করে আবিষ্কার করার দরকার নেই; তৈরি করা সার্ভিস ব্যবহার করে দ্রুত অ্যাপ বানানো যায়। ৩. Automation: মানুষের হস্তক্ষেপ ছাড়াই ডাটা শেয়ারিং।

গ) API-এর বিভিন্ন রূপ

ইনস্ট্রাক্টর শুধু ওয়েব নয়, বরং সিস্টেম লেভেলের API-ও বুঝিয়েছেন:

  • Operating System API: উইন্ডোজ বা লিনাক্সের হার্ডওয়্যার রিসোর্স (যেমন: ফাইল মেমরি) ব্যবহারের জন্য।
  • Library API (SDK): যেমন C#-এর লিব্রেরিগুলো যা আমরা কোডে ব্যবহার করি।
  • Hardware API: যেমন DirectX যা গেম বা গ্রাফিক্স সফটওয়্যারকে সরাসরি গ্রাফিক্স কার্ডের সাথে কথা বলতে সাহায্য করে।

ঘ) Web API এবং প্রোটোকল

ওয়েব দুনিয়ায় রিকোয়েস্ট আদান-প্রদানের কিছু নিয়ম আছে। যেমন:

  • REST (Representational State Transfer): বর্তমানে সবচেয়ে জনপ্রিয় এবং এই কোর্সের মূল বিষয়।
  • SOAP: এটি একটু পুরনো এবং কঠোর নিয়ম মেনে চলে (মূলত ব্যাংকিং সেক্টরে বেশি দেখা যায়)।
  • GraphQL: ক্লায়েন্ট যতটুকু ডাটা চাইবে, ঠিক ততটুকুই পাবে।
  • gRPC: হাই-পারফরম্যান্স এবং মাইক্রোসার্ভিস আর্কিটেকচারের জন্য ব্যবহৃত হয়।

৩. Code Implementations: একটি সিম্পল API রিকোয়েস্ট

ইনস্ট্রাক্টর যেহেতু রিকোয়েস্ট-রেসপন্স সাইকেল বুঝিয়েছেন, আমি তোমাকে একটি C# কোড দেখাচ্ছি যেখানে আমরা একটি Web API কল করে ডাটা নিয়ে আসছি।

using System;
using System.Net.Http;
using System.Threading.Tasks;
 
namespace MyApiDemo
{
    class Program
    {
        // HttpClient ব্যবহার করে API কল করা হয়
        static readonly HttpClient client = new HttpClient();
 
        static async Task Main(string[] args)
        {
            try
            {
                // OpenWeather বা অন্য কোনো API থেকে ডাটা আনা (উদাহরণস্বরূপ JSON Placeholder)
                string url = "https://jsonplaceholder.typicode.com/posts/1";
                
                Console.WriteLine("API রিকোয়েস্ট পাঠানো হচ্ছে...");
                HttpResponseMessage response = await client.GetAsync(url);
                
                // চেক করা হচ্ছে রিকোয়েস্ট সফল কি না
                response.EnsureSuccessStatusCode();
                
                string responseBody = await response.Content.ReadAsStringAsync();
                
                // এটাই হলো সেই Response যা সার্ভার আমাদের পাঠালো
                Console.WriteLine("\nসার্ভার থেকে প্রাপ্ত রেসপন্স:");
                Console.WriteLine(responseBody);
            }
            catch (HttpRequestException e)
            {
                Console.WriteLine("\nত্রুটি ঘটেছে: " + e.Message);
            }
        }
    }
}
 

৪. Added Context & Trade-offs (Tech Lead Mindset)

হাসিব, একজন লিড হিসেবে তোমাকে বুঝতে হবে কেন আমরা REST বেছে নেই?

১. Abstraction-এর গুরুত্ব

ইনস্ট্রাক্টর বলেছেন আমরা জানি না পেছনের কোয়েরি কী। এর সুবিধা হলো, আজ যদি তুমি SQL Server বাদ দিয়ে MongoDB ব্যবহার করো, ক্লায়েন্টের কোডে কোনো পরিবর্তন করতে হবে না। API ইন্টারফেসটি একই থাকবে। এটাকে বলে Decoupling

২. কেন REST বনাম SOAP?

  • REST: হালকা (JSON ব্যবহার করে), ক্যাশে (Cache) করা যায় এবং ব্রাউজার ফ্রেন্ডলি। মোবাইলে অ্যাপের জন্য এটিই আদর্শ।
  • SOAP: ভারী (XML ব্যবহার করে), কিন্তু এতে সিকিউরিটি এবং ট্রানজেকশন রুলস খুব কড়া। লিগ্যাসি ব্যাংকিং সিস্টেম এখনো এটা পছন্দ করে।

৩. API Security (যা লেকচারে নেই কিন্তু লিড হিসেবে জানা জরুরি)

API মানেই তুমি তোমার সার্ভারের দরজা বাইরের পৃথিবীর জন্য খুলে দিচ্ছ। তাই Authentication (JWT/OAuth2) এবং Rate Limiting (একই ইউজার যেন বারবার রিকোয়েস্ট পাঠিয়ে সার্ভার ডাউন না করতে পারে) মাস্ট!


৫. C# Best Practices

১. Use HttpClientFactory: সরাসরি new HttpClient() না করে ডটনেট কোর-এর IHttpClientFactory ব্যবহার করো। এতে মেমরি লিক বা সকেট এক্সজশন (Socket Exhaustion) সমস্যা হয় না। ২. Status Codes: সবসময় সঠিক HTTP স্ট্যাটাস কোড দাও (সফল হলে ২০০, না পাওয়া গেলে ৪০৪, সার্ভার এরর হলে ৫০০)। ৩. Versioning: প্রথম থেকেই API-এর ভার্সনিং (যেমন: api/v1/products) রাখা ভালো যাতে পরে কোড চেঞ্জ করলে পুরনো ইউজারদের অ্যাপ ভেঙে না যায়।


৬. Tech Lead Interview Prep (Scenario-based)

প্রশ্ন ১: “API is an abstraction layer”—কথাটি বুঝিয়ে বলুন।

  • উত্তর: এর মানে হলো API শুধু ‘কী’ হবে সেটা বলে, ‘কীভাবে’ হবে সেটা লুকিয়ে রাখে। ইউজার শুধু জানে GET /api/weather কল করলে ওয়েদার পাওয়া যাবে। ডাটাবেজ থেকে ডাটা আসছে নাকি কোনো ফাইল থেকে, সেটা ইউজারের জানার দরকার নেই। এটি সিস্টেমকে অনেক বেশি মেইনটেইনেবল করে।

প্রশ্ন ২: আপনার মোবাইল অ্যাপ টিম বলছে ডাটা লোড হতে অনেক সময় লাগছে কারণ API থেকে অনেক অপ্রয়োজনীয় ডাটা আসছে। আপনি কী করবেন?

  • উত্তর: এখানে দুটি সমাধান আছে। ১. বর্তমান REST API-তে DTO (Data Transfer Object) ব্যবহার করে শুধু প্রয়োজনীয় প্রোপার্টি পাঠানো। ২. যদি প্রজেক্ট বড় হয় এবং ফ্লেক্সিবিলিটি লাগে, তবে GraphQL ইমপ্লিমেন্ট করার কথা ভাবা যেতে পারে।

প্রশ্ন ৩: হার্ডওয়্যার API এবং ওয়েব API-এর মধ্যে মূল পার্থক্য কী?

  • উত্তর: হার্ডওয়্যার API (যেমন DirectX) সরাসরি মেমরি এবং প্রসেসরের সাথে লো-লেভেল কমিউনিকেশন করে যা খুব ফাস্ট হতে হয়। অন্যদিকে ওয়েব API (যেমন REST) নেটওয়ার্কের মাধ্যমে HTTP প্রোটোকল ব্যবহার করে কাজ করে, যা হার্ডওয়্যার API-এর তুলনায় ধীরগতিসম্পন্ন কিন্তু বিভিন্ন ডিভাইসের মধ্যে কানেক্টিভিটির জন্য সেরা।

পরের পার্টে ইনস্ট্রাক্টর আলোচনা করবেন কেন ASP.NET Core API বানানোর জন্য সেরা চয়েস। তুমি কি তৈরি? কোনো প্রশ্ন থাকলে নির্দ্বিধায় করো!