DEV Community

Ruhul Amin Sujon
Ruhul Amin Sujon

Posted on • Edited on

API IQ - Level 1 - Part 1

প্রশ্ন 1: API কী?

✅ উত্তর: API (Application Programming Interface) হলো একধরনের ইন্টারফেস, যা দুটি সফটওয়্যার বা সিস্টেমের মধ্যে ডাটা আদান-প্রদান করতে সাহায্য করে। এটি মূলত বিভিন্ন অ্যাপ্লিকেশন বা সার্ভিসকে সংযোগ স্থাপন করার জন্য ব্যবহৃত হয়।

প্রশ্ন 2: REST API কী?

✅ উত্তর: REST (Representational State Transfer) API হলো একটি আর্কিটেকচারাল স্টাইল, যা ক্লায়েন্ট ও সার্ভারের মধ্যে ডাটা আদান-প্রদানের জন্য নির্দিষ্ট নিয়ম অনুসরণ করে। এটি HTTP প্রোটোকল ব্যবহার করে JSON বা XML ফরম্যাটে ডাটা আদান-প্রদান করে।

প্রশ্ন 3: REST API এবং SOAP API-এর মধ্যে পার্থক্য কী?

✅ উত্তর:

বিষয় REST API SOAP API
প্রোটোকল HTTP ভিত্তিক HTTP, SMTP, TCP, UDP ইত্যাদি
ফরমাট JSON, XML, HTML শুধুমাত্র XML
পারফরম্যান্স দ্রুত এবং হালকা তুলনামূলক ধীর
ব্যবহারযোগ্যতা ওয়েব ও মোবাইল অ্যাপে জনপ্রিয় ব্যাংকিং ও নিরাপত্তা সংক্রান্ত কাজের জন্য ভালো

প্রশ্ন 4: API-এর প্রধান HTTP মেথড কী কী?

✅ উত্তর:
১. GET – ডাটা রিট্রিভ করার জন্য।
২. POST – নতুন ডাটা যুক্ত করার জন্য।

  1. PUT – সম্পূর্ণ রিসোর্স আপডেট করার জন্য।
  2. PATCH – আংশিক আপডেট করার জন্য।
  3. DELETE – ডাটা মুছে ফেলার জন্য।

🔹 Laravel API সম্পর্কিত প্রশ্ন ও উত্তর

প্রশ্ন 5: Laravel এ API তৈরি করার জন্য কী কী প্রয়োজন?

✅ উত্তর: Laravel-এ API তৈরি করতে নিচের ধাপগুলো অনুসরণ করা হয়:

1. Routes তৈরি করা: routes/api.php ফাইলে রুট ডিফাইন করা হয়।

2. Controller তৈরি করা: API-এর লজিক ব্যবস্থাপনার জন্য Controller ব্যবহার করা হয়।

3. Middleware ব্যবহার করা: Authentication (JWT, Sanctum) এবং Authorization ব্যবহারের জন্য।

4. Resource & Response Formatting: JSON রেসপন্সের জন্য Laravel API Resource ব্যবহার করা হয়।

প্রশ্ন 6: Laravel Sanctum কী এবং কেন ব্যবহৃত হয়?

✅ উত্তর: Laravel Sanctum হল একটি প্যাকেজ যা SPA (Single Page Application) বা মোবাইল অ্যাপ্লিকেশনের জন্য সহজ অথেনটিকেশন সিস্টেম প্রদান করে। এটি টোকেন ভিত্তিক অথেনটিকেশন প্রদান করে এবং API-তে সিকিউরিটি বাড়ায়।

প্রশ্ন 7: API Rate Limiting কী এবং Laravel-এ এটি কীভাবে কাজ করে?

✅ উত্তর: API Rate Limiting হলো একটি নিরাপত্তামূলক ব্যবস্থা যা নির্দিষ্ট সময়ে কতবার API কল করা যাবে তা নির্ধারণ করে। Laravel-এ এটি throttle middleware দিয়ে করা হয়।
উদাহরণ:

Route::middleware('throttle:60,1')->group(function () {
    Route::get('/users', [UserController::class, 'index']);
});
Enter fullscreen mode Exit fullscreen mode

এখানে প্রতি ১ মিনিটে সর্বোচ্চ ৬০ বার API কল করা যাবে।

প্রশ্ন 8: Laravel API Resource কী এবং এটি কীভাবে কাজ করে?

✅ উত্তর: Laravel API Resource হলো একটি ক্লাস যা ডাটা ফরম্যাট করে সুন্দরভাবে JSON রেসপন্স তৈরিতে সাহায্য করে।
উদাহরণ:

namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;

class UserResource extends JsonResource
{
    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'name' => $this->name,
            'email' => $this->email,
            'created_at' => $this->created_at->format('Y-m-d'),
        ];
    }
}

Enter fullscreen mode Exit fullscreen mode

এটি ব্যবহার করতে:

return new UserResource($user);

Enter fullscreen mode Exit fullscreen mode

অথবা

return UserResource::collection(User::all());

Enter fullscreen mode Exit fullscreen mode

🔹 সিকিউরিটি সম্পর্কিত প্রশ্ন ও উত্তর

প্রশ্ন 9: JWT (JSON Web Token) কী এবং এটি কীভাবে কাজ করে?

✅ উত্তর: JWT হল একটি টোকেন-ভিত্তিক অথেনটিকেশন পদ্ধতি যেখানে একটি এনক্রিপ্টেড টোকেন তৈরি হয় যা ব্যবহারকারীকে অথেনটিকেট করতে ব্যবহৃত হয়। এটি সাধারণত Header + Payload + Signature আকারে গঠিত হয়।

প্রশ্ন 10: CORS (Cross-Origin Resource Sharing) কী?

✅ উত্তর: CORS হলো একটি ব্রাউজার সিকিউরিটি ফিচার যা এক ডোমেইনের API-তে অন্য ডোমেইন থেকে এক্সেস প্রতিরোধ বা অনুমোদন করে। Laravel-এ এটি cors.php ফাইলের মাধ্যমে কনফিগার করা যায়।

প্রশ্ন 11: CSRF (Cross-Site Request Forgery) কী?

✅ উত্তর: CSRF হলো একটি আক্রমণ যেখানে একজন অ্যাটাকার ব্যবহারকারীর ব্রাউজারকে প্রতারিত করে অনিচ্ছাকৃত API কল করায়। Laravel-এ এটি প্রতিরোধের জন্য csrf_token() ব্যবহার করা হয়।


🔹 ডিবাগিং ও টেস্টিং সম্পর্কিত প্রশ্ন ও উত্তর

প্রশ্ন 12: Laravel-এ API টেস্ট করার জন্য কোন টুল ব্যবহার করা হয়?

✅ উত্তর:
✅ Postman – API টেস্টিংয়ের জন্য সবচেয়ে জনপ্রিয় টুল।
✅ cURL – কমান্ড লাইন থেকে API টেস্ট করার জন্য।
✅ Laravel PHPUnit – ইউনিট টেস্টিং করার জন্য।

প্রশ্ন 13: Laravel API টেস্ট করার জন্য একটি PHPUnit টেস্ট কেসের উদাহরণ দিন।

✅ উত্তর:

public function testGetUserList()
{
    $response = $this->getJson('/api/users');

    $response->assertStatus(200)
             ->assertJsonStructure([
                 '*' => ['id', 'name', 'email', 'created_at']
             ]);
}

Enter fullscreen mode Exit fullscreen mode

এটি নিশ্চিত করে যে /api/users এ কল করলে JSON ফরম্যাট সঠিকভাবে রিটার্ন হয়।


🔹 API Status Code সম্পর্কিত প্রশ্ন ও উত্তর

প্রশ্ন 14: 1. HTTP Status Code কী?

✅ উত্তর: HTTP Status Code হলো তিন অঙ্কের সংখ্যা, যা ক্লায়েন্ট ও সার্ভারের মধ্যে কমিউনিকেশন স্ট্যাটাস বোঝানোর জন্য ব্যবহৃত হয়। এগুলো API রেসপন্সের অংশ হিসেবে কাজ করে।

প্রশ্ন 15: 2. HTTP Status Code কয়টি ক্যাটাগরিতে বিভক্ত?

✅ উত্তর: HTTP Status Code মোট ৫টি ক্যাটাগরিতে বিভক্ত:

ক্যাটাগরি কোড রেঞ্জ অর্থ
1xx (Informational) 100-199 অনুরোধ গ্রহণ হয়েছে, আরও প্রসেস হবে
2xx (Success) 200-299 অনুরোধ সফলভাবে সম্পন্ন হয়েছে
3xx (Redirection) 300-399 ক্লায়েন্টকে অন্য URL-এ রিডাইরেক্ট করা হয়েছে
4xx (Client Errors) 400-499 ক্লায়েন্টের অনুরোধে সমস্যা রয়েছে
5xx (Server Errors) 500-599 সার্ভারের দোষে অনুরোধ ব্যর্থ হয়েছে

প্রশ্ন 16: 3. API রেসপন্সের জন্য সবচেয়ে বেশি ব্যবহৃত স্ট্যাটাস কোড কী কী?

✅ উত্তর:
✅ 200 OK → অনুরোধ সফলভাবে প্রসেস হয়েছে।
✅ 201 Created → নতুন রিসোর্স তৈরি হয়েছে (POST API)।
✅ 204 No Content → সফল, তবে কোন কন্টেন্ট নেই (DELETE API)।
✅ 400 Bad Request → ক্লায়েন্টের অনুরোধ ভুল ছিল।
✅ 401 Unauthorized → অথেনটিকেশন (লগইন) প্রয়োজন।
✅ 403 Forbidden → অনুমতি নেই, তবে অথেনটিকেশন আছে।
✅ 404 Not Found → নির্দিষ্ট রিসোর্স পাওয়া যায়নি।
✅ 405 Method Not Allowed → অনুরোধের HTTP মেথড অ্যালাউ নয়।
✅ 422 Unprocessable Entity → ডাটা ভ্যালিডেশন ফেল করেছে।
✅ 500 Internal Server Error → সার্ভারের ভেতরের সমস্যা।

প্রশ্ন 17:. REST API এবং GraphQL-এর মধ্যে পার্থক্য কী?

✅ উত্তর:

বিষয় REST API GraphQL
ডাটা ফেচিং নির্দিষ্ট এন্ডপয়েন্ট থেকে নির্দিষ্ট ডাটা আসে ক্লায়েন্ট চাহিদামতো ডাটা ফেচ করতে পারে
ওভারফেচিং/আন্ডারফেচিং ওভারফেচিং হতে পারে প্রয়োজনীয় ডাটাই রিটার্ন করে
HTTP মেথড GET, POST, PUT, DELETE ইত্যাদি সবকিছু সাধারণত POST এর মাধ্যমে
পারফরম্যান্স অনেক এন্ডপয়েন্ট থাকলে স্লো হতে পারে এক API Endpoint দিয়ে দ্রুত কাজ করা যায়
ব্যবহার ক্ষেত্র প্রচলিত RESTful সার্ভিসের জন্য ভালো ডাটা-সেন্ট্রিক অ্যাপের জন্য ভালো

প্রশ্ন 18:. API Versioning কী? Laravel-এ এটি কীভাবে করা যায়?

✅ উত্তর: API Versioning হলো একই API-এর বিভিন্ন সংস্করণ মেইনটেইন করা, যাতে পুরানো ক্লায়েন্টের সাথে সামঞ্জস্য রাখা যায়।

প্রশ্ন 19:. JWT (JSON Web Token) কীভাবে কাজ করে?

✅ উত্তর: JWT হলো Token-based Authentication System, যেখানে ইউজারকে অথেনটিকেট করার জন্য একটি এনক্রিপ্টেড টোকেন ইস্যু করা হয়।

✅ JWT টোকেনের ৩টি অংশ:
1️⃣ Header – {"alg": "HS256", "typ": "JWT"}
2️⃣ Payload (Data) – { "id": 1, "email": "user@example.com" }
3️⃣ Signature – HMACSHA256(header + payload, secret_key)

✅ JWT ব্যবহার:

use Tymon\JWTAuth\Facades\JWTAuth;

// টোকেন জেনারেট করা
$token = JWTAuth::fromUser($user);

// টোকেন থেকে ইউজার রিট্রিভ করা
$user = JWTAuth::parseToken()->authenticate();

Enter fullscreen mode Exit fullscreen mode

প্রশ্ন 20:. OAuth 2.0 কী এবং এটি কীভাবে কাজ করে?

✅ উত্তর: OAuth 2.0 হলো Token-based Authorization Framework, যা থার্ড-পার্টি অ্যাপে সিকিউরভাবে এক্সেস প্রদান করতে ব্যবহৃত হয়।

✅ OAuth 2.0-এর প্রধান ৪টি গ্রান্ট টাইপ:

গ্রান্ট টাইপ ব্যবহার
Authorization Code ওয়েব অ্যাপের জন্য (Google Login)
Implicit ক্লায়েন্ট-সাইড অ্যাপের জন্য
Client Credentials সার্ভিস-টু-সার্ভিস অথরাইজেশন
Password Grant ইউজারনেম/পাসওয়ার্ড দিয়ে লগইন

✅ Laravel-এ OAuth 2.0 ব্যবহারের জন্য Laravel Passport ব্যবহার করা হয়।

use Laravel\Passport\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;
}

Enter fullscreen mode Exit fullscreen mode

প্রশ্ন 21: Laravel API Response Caching কীভাবে করা যায়?

✅ উত্তর: Response Caching ব্যবহার করলে একই রিকুয়েস্ট বারবার প্রসেস না করে ক্যাশ থেকে দ্রুত রেসপন্স পাঠানো হয়, যা পারফরম্যান্স বাড়ায়।

✅ উদাহরণ:

use Illuminate\Support\Facades\Cache;

public function getUsers()
{
    return Cache::remember('users', 60, function () {
        return User::all();
    });
}

Enter fullscreen mode Exit fullscreen mode

👉 এখানে "users" ক্যাশে রাখা হবে এবং ৬০ সেকেন্ড পর নতুন ডাটা ফেচ করা হবে।

প্রশ্ন 22: Laravel API সিকিউর করার জন্য প্রধান কৌশল কী কী?

✅ উত্তর: Laravel API সুরক্ষিত করার জন্য নিচের পদ্ধতিগুলো ব্যবহার করা যেতে পারে:
1️⃣ Authentication & Authorization (JWT, Sanctum, Passport)
2️⃣ Rate Limiting (API abuse প্রতিরোধ)
3️⃣ CORS Policy (Cross-Origin Request নিয়ন্ত্রণ)
4️⃣ Data Encryption (Sensitive ডাটা এনক্রিপশন)
5️⃣ SQL Injection Prevention (Eloquent ORM ও Query Builder ব্যবহার করা)
6️⃣ Validation & Sanitization (Request Data ফিল্টার করা)
7️⃣ Logging & Monitoring (Unauthorized request ট্র্যাক করা)

প্রশ্ন 23:. Laravel-এ API Authentication করার জন্য কী কী পদ্ধতি রয়েছে?

✅ উত্তর:
1️⃣ Sanctum – লাইটওয়েট টোকেন-বেইজড অথেনটিকেশন।
2️⃣ Passport – OAuth2 বেইজড অথেনটিকেশন (সিকিউর কিন্তু বেশি কমপ্লেক্স)।
3️⃣ JWT (JSON Web Token) – স্ট্যান্ডার্ড অথেনটিকেশন পদ্ধতি যা অনেক API ব্যবহার করে।

প্রশ্ন 24:. Laravel Sanctum কীভাবে কাজ করে?

✅ উত্তর: Laravel Sanctum হল একটি Simple Token-Based Authentication System যা SPA (Vue, React, Angular) এবং মোবাইল অ্যাপ্লিকেশনের জন্য সহজ অথেনটিকেশন প্রদান করে।

প্রশ্ন 25:. Laravel API-এর পারফরম্যান্স বাড়ানোর জন্য প্রধান কৌশল কী কী?

✅ উত্তর:
1️⃣ Eager Loading ব্যবহার করুন (N+1 Problem সমাধান করতে)
2️⃣ Database Indexing করুন
3️⃣ Query Caching ব্যবহার করুন (Redis, Memcached)
4️⃣ Queue & Job ব্যবহার করুন (Heavy Task Offload করতে)
5️⃣ Pagination ব্যবহার করুন (বড় ডাটা লোড কমাতে)
6️⃣ Compression (Gzip, Brotli)
7️⃣ Lazy Collection ব্যবহার করুন

প্রশ্ন 26: Laravel API-তে HATEOAS কী?

✅ উত্তর: HATEOAS (Hypermedia as the Engine of Application State) হলো REST API-র একটি অ্যাডভান্সড কনসেপ্ট, যা API রেসপন্সের সাথে লিংক সংযুক্ত করে, যাতে ক্লায়েন্ট সহজে অন্য রিসোর্সে নেভিগেট করতে পারে।

🔹 উদাহরণ:

{
    "id": 1,
    "name": "John Doe",
    "links": {
        "self": "/api/users/1",
        "posts": "/api/users/1/posts"
    }
}

Enter fullscreen mode Exit fullscreen mode

প্রশ্ন 27: Laravel API-তে WebSocket কীভাবে ব্যবহার করা যায়?

✅ উত্তর: WebSocket ব্যবহার করে Real-Time API তৈরি করা যায় (যেমন: চ্যাট অ্যাপ)। Laravel-এ Pusher বা Socket.IO ব্যবহার করা হয়।

🔹 Event তৈরি করা:

php artisan make:event MessageSent

Enter fullscreen mode Exit fullscreen mode

🔹 Broadcasting:

broadcast(new MessageSent($message))->toOthers();

Enter fullscreen mode Exit fullscreen mode

Top comments (0)