> For the complete documentation index, see [llms.txt](https://mominur.gitbook.io/mominur-notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mominur.gitbook.io/mominur-notes/system-design/api/api-architecture.md).

# API Architecture

আপনি যদি একজন Developer, Software Engineer বা Tech Enthusiast হন, তাহলে API শব্দটা আপনার কানে বারবার আসে। REST, SOAP, GraphQL, gRPC, WebSocket—এসব টার্ম এতবার শুনে মাথা খারাপ? কোনটা কী, কখন ব্যবহার করবেন, কোনটা কিসে ভালো—এসব নিয়ে যদি কনফিউশন থাকে বা বিস্তারিত জানতে ইচ্ছুক, তাহলে আপনি লেখাটি পড়তে পারেন।

### API Architecture&#x20;

সহজভাবে বললে:&#x20;

API Architecture মানে হচ্ছে কোন নিয়মে ও কীভাবে ক্লায়েন্ট (যেমন অ্যাপ, ব্রাউজার, মোবাইল) সার্ভারের সাথে ডেটা আদান-প্রদান করবে, সেই রূপরেখা বা ডিজাইন।

এটি নির্ধারণ করে:

* ডেটা কীভাবে পাঠানো ও গ্রহণ করা হবে (JSON, XML, Protobuf ইত্যাদি),
* কোন কমিউনিকেশন প্রটোকল ব্যবহার করা হবে (HTTP, WebSocket, TCP),
* ক্লায়েন্ট কতটা নিয়ন্ত্রণ পাবে (server-driven নাকি client-driven),
* সিকিউরিটি ও পারফরম্যান্স কেমন হবে, ইত্যাদি।

### API Architecture Styles

সবচেয়ে পরিচিত API Architecture গুলো হলো:

1. REST (Representational State Transfer)
2. SOAP (Simple Object Access Protocol)
3. GraphQL
4. gRPC (Google Remote Procedure Call)
5. WebSocket
6. Server-Sent Events (SSE)

### [**1. REST (Representational State Transfer)**](/mominur-notes/system-design/api/rest-api.md)

REST হলো সবচেয়ে জনপ্রিয় API ডিজাইন স্টাইল। এটা HTTP এর উপর ভিত্তি করে কাজ করে, যেমন: GET, POST, PUT, DELETE—এই কমান্ডগুলোই API এর সাথে যোগাযোগ করে।

#### **উদাহরণ:**

```http
GET /users/123
```

মানে হচ্ছে 123 নম্বর ইউজারের তথ্য চাই।

#### **কখন ব্যবহার করবেন ?**

* যখন আপনার কাজটা সিম্পল CRUD (Create, Read, Update, Delete)
* ওয়েব অ্যাপ, মোবাইল অ্যাপ, পাবলিক API বানাতে
* যখন Scalability দরকার

#### **কেন জনপ্রিয়?**

* সহজবোধ্য
* ক্লিন URL
* Lightweight এবং JSON ফরম্যাটে কাজ করে

***

### [**2. SOAP (Simple Object Access Protocol)**](/mominur-notes/system-design/api/soap.md)

SOAP হলো একটু পুরনো কিন্তু এখনও অনেক গুরুত্বপূর্ণ API স্টাইল, যা **XML** ফরম্যাটে কাজ করে। এটা খুবই Formal, Contract-based এবং Security-focused।

#### **উদাহরণ:**

```xml
<soap:Envelope>
  <soap:Body>
    <GetUserDetails>
      <userId>123</userId>
    </GetUserDetails>
  </soap:Body>
</soap:Envelope>
```

#### **কখন ব্যবহার করবেন?**

* ব্যাংকিং, ফাইন্যান্স, গর্ভমেন্ট লেভেলের Application এ
* যেখানে Extreme Security দরকার
* যখন Reliable এবং Formal API দরকার হয়

#### **বিশেষত্ব:**

* Built-in Error Handling
* Strong Security (WS-Security)
* XML Only

***

### [**3. GraphQL**](/mominur-notes/system-design/api/graphql.md)

GraphQL হলো Facebook তৈরি একটা Modern API স্টাইল যেখানে ক্লায়েন্ট ঠিক করে দেয় সে কী ডেটা চায়। এতে Over-fetch বা Under-fetch হয় না।

#### **উদাহরণ:**

```graphql
query {
  user(id: "123") {
    name
    email
    posts {
      title
    }
  }
}
```

#### **কখন ব্যবহার করবেন ?**

* আপনি যখন Multiple Data একসাথে দরকার
* মোবাইল অ্যাপ বা ফ্রন্টএন্ড ফ্লেক্সিবল করতে চান
* যখন আপনি কম ব্যান্ডউইথ খরচে বেশি ডেটা আনতে চান

#### **কেন ইউনিক?**

* Client-driven data fetching
* এক Endpoint, Multiple Resource

***

### [**4. gRPC (Google Remote Procedure Call)**](/mominur-notes/system-design/api/grpc.md)

gRPC হলো Google এর বানানো একটা সুপার ফাস্ট Communication পদ্ধতি, যেখানে Protocol Buffers (Protobuf) ব্যবহার করে Data পাঠানো হয়। এটা অনেক Lightweight এবং HTTP/2 ভিত্তিক।

#### **উদাহরণ (.proto file):**

```proto
service UserService {
  rpc GetUser (UserRequest) returns (UserResponse);
}
```

**কখন ব্যবহার করবেন?**

* Microservices Architecture
* যখন Low Latency দরকার (Real-time Systems)
* যখন Internal Communication প্রয়োজন

#### **কেন powerful?**

* Extremely Fast
* Contract-based
* Bi-directional Streaming

***

### **5. WebSockets**

WebSocket হলো একধরনের Real-time Communication প্রযুক্তি যা ক্লায়েন্ট এবং সার্ভারের মধ্যে দুইপাশে কথা বলার সুযোগ দেয় (Full-duplex connection)।

#### **উদাহরণ:**

* লাইভ চ্যাট অ্যাপ
* গেমিং অ্যাপ
* লাইভ স্টক আপডেট

#### **কখন ব্যবহার করবেন?**

* রিয়েল টাইম ডেটা দরকার
* লাইভ ফিড, চ্যাট, গেমিং বা নোটিফিকেশন সিস্টেম

***

### **6. Server-Sent Events (SSE)**

SSE এমন একটা টেকনোলজি যেখানে সার্ভার থেকে ক্লায়েন্টে ডেটা একপাশে পাঠানো যায়—One-way communication। এটা HTTP এর উপর ভিত্তি করে কাজ করে।

#### **কখন ব্যবহার করবেন?**

* Real-time ড্যাশবোর্ড
* লাইভ নিউজ ফিড
* সার্ভার থেকে ফ্রিকোয়েন্ট আপডেট পাঠানো দরকার

***

একজন দক্ষ Developer কখনো সব API স্টাইল একসাথে ব্যবহার করেন না। বরং, কাজের ধরন বুঝে তিনি ঠিক করেন—কোন API Architecture সবচেয়ে Efficient হবে।

REST হচ্ছে Best All-rounder, GraphQL ফ্লেক্সিবল, SOAP Secure, gRPC সুপারফাস্ট, আর WebSocket Real-time এর রাজা!

API বানাবেন? তাহলে চিন্তা করে ঠিক করুন কোনটা ব্যবহার করবেন। কারণ সঠিক API Architecture মানেই পারফরম্যান্স, স্কেলিবিলিটি আর ডেভেলপার হ্যাপিনেস
