যেকোন App এ API অনেক গুরুত্বপূর্ণ একটি অংশ, আর এই API যদি সঠিক ভাবে তৈরি না করা হয় তাহলে যারা API টা consume করে তাদের API টি সঠিক ভাবে ব্যবহার করা এবং পরবর্তীতে API maintain করা অনেক কঠিন হয়ে পরে। সুতরাং একটি ভাল API তৈরি করার সময় কিছু নির্দিষ্ট standard মেনে API তৈরি করা অনেক গুরুত্বপূর্ণ। এই পর্বে আমি কিছু standard নিয়ে কথা বলার চেষ্টা করেছি।

 

Deep Filtering

API থেকে যখন data নেয়া হবে তাখন যেন data কে filter করা যায়, যেমনঃ order by, pagination ইত্যাদি।

 

Proper Error Message

অর্থপূর্ণ error message ব্যবহার করতে হবে যেন সেগুলো কোন modification ছাড়াই Web কিংবা Mobile App এ ব্যবহার করা যায়।

 

Correct HTTP Status Code

Operation আনুযায়ি HTTP status code দিতে হবে, এর জন্য Wikipedia link টি follow করা যেতে পারে।

 

API Documentation

ভাল Documentation API এর অনেক গুরুত্বপূর্ণ একটি অংশ, Documentation ভাল ভাবে না লিখলে কেউ বুঝবেই না আপনি কি API বানিয়েছেন।

 

API Versioning

API বানানোর কিছুদিন পর API এ নতুন feature যোক্ত করা লাগতে পারে, তাখন আগের API কে modify না করে নতুন version release করা টা best practice.

 

Proper HTTP Verbs

HTTP verbs গুলো (GET, POST, PUT, DELETE) যথাযথ ভাবে ব্যবহার করা, এদের প্রত্যেকেরই নির্দিষ্ট কাজ রয়েছে।

 

Turn Intent Into URL

URL/Route এমন ভাবে তৈরি করতে হবে যেন URL থেকে বুঝা যার এটা কি data return করবে। এক্ষেত্রে কিছু stanard follow করা যেতে পারে। যেমনঃ

Noun ব্যবহার করা এবং noun যেন plural হয়। URL এ verb ব্যবহার না করা।

GET /users

Relational ডাটার জন্য sub-resource ব্যবহার করা।

GET /users/55/articles # Returns a list of articles for user 55

 

API Unit Test

API এর সকল feature সঠিক ভবে কাজ করছে কিনা তা unit test করে check করা উচিৎ।

 

Transformation Layer

সাধারানত database থেকে যেমন আসে আমরা সেটাকেই JSON করে পাঠিয়ে দেই, কিন্তু এটা না করে মধ্যস্থ একটা transformation বসানো উচিৎ, যেন প্রবর্তিতে database এর design change হলে JSON blueprint যেন পরিবর্তন না হয়।

 

Authentication & Authorization

Authentication বা Authorization এর জন্য কিছু common standard রয়েছে সেগুলো follow করা best practice. যেমনঃ Basic Auth, OAuth 2.0, JWT ইত্যাদি।

 

পরবর্তী পর্বে আমরা Laravel দিয়ে উপরের standard গুলো follow করে একটি ছোট API বানানোর চেষ্টা করবো।