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

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

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

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

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

✅ উত্তর:

Image description

প্রশ্ন 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']);
});

এখানে প্রতি ১ মিনিটে সর্বোচ্চ ৬০ বার 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'),
        ];
    }
}

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

return new UserResource($user);

অথবা

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

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

প্রশ্ন 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']
             ]);
}

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


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

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

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

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

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

Image description

প্রশ্ন 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-এর মধ্যে পার্থক্য কী?

✅ উত্তর:

Image description

প্রশ্ন 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();

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

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

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

Image description

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

use Laravel\Passport\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;
}

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

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

✅ উদাহরণ:

use Illuminate\Support\Facades\Cache;

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

👉 এখানে "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"
    }
}

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

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

🔹 Event তৈরি করা:

php artisan make:event MessageSent

🔹 Broadcasting:

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