Postman একটি চমৎকার টুল যা দিয়ে আমরা API prototyping থেকে শুরু করে API টেস্টিং, ডকুমেন্টেশন, CI এ টেস্ট যুক্ত করা ইত্যাদি কাজ করতে পারি। Postman এর মাধ্যমে API হয়ে উঠেছে আরো ব্যবহার উপযোগী। Development environment এ এই টুল দারুণ কার্যকরি।

Application Programming Interface (API)

API হচ্ছে client এবং server এর মধ্যে ইন্টারফেইস কিংবা কমিউনিকেশন প্রোটোকল যার উদ্দেশ্য হচ্ছে client এবং server based অ্যাপ্লিকেশন Development সহজ করা এবং অন্যান্য সিস্টেম থেকে ওয়েব সার্ভিস consume করা। এটি এমন ভাবে কাজ করে যে, যখন client থেকে নির্দিষ্ট ফরমেটের মাধ্যমে ওয়েভ সার্ভারের নিকট রিকোয়েস্ট প্রেরণ করে তখন server একটি নির্দিষ্ট ফরমেটে client এর নিকট রেসপন্স পাঠায়।

Postman Collection

Postman Collection হচ্ছে এক ধরনের লিস্ট যেখানে API রিকোয়েস্ট গুলো ক্রমান্বয়ে যুক্ত করা হয়। API রিকোয়েস্ট বিভিন্ন ধরনের হতে পরে, তবে এদের মধ্যে অন্যতম হচ্ছে GET, POST, PUT, PATCH, DELETE ইত্যাদি। এছাড়া ও collection এর নিজস্ব variable লিস্ট, প্রি-রিকোয়েস্ট স্ক্রিপ্ট এবং টেস্ট স্ক্রিপ্ট রয়েছে। এই স্ক্রিপ্ট গুলো collection এর প্রত্যেকটি রিকোয়েস্টের আগে-পরে রান করবে। তবে রিকোয়েস্ট গুলোর নিজেদের ও প্রি-রিকোয়েস্ট স্ক্রিপ্ট এবং টেস্ট স্ক্রিপ্ট রয়েছে তা নিয়ে একটু পরে বলি। এতক্ষণ collection নিয়ে যা কিছু বললাম সব ইউজার পয়েন্ট অফ ভিউ থেকে কিন্তু প্রকৃত পক্ষে collection হচ্ছে Executable API Description। অন্য ভাষায় এটি একটি JSON ফাইল যেটি মেশিন পড়তে পারে।

Environment

আগেই বলেছিলাম collection এর নিজস্ব variable থাকে কিন্তু কখনো variable গুলো পরিবর্তন করার প্রয়োজন পড়লে কিংবা collection অন্য কোথাও রান করার সময় কিছু variable এর পরিবর্তন করতে হতে পারে। এই সমস্যা খুব সহজ সমাধান হচ্ছে environment variable. Postman এর environment variable হচ্ছে একটি workspace এর অন্তভুক্ত set of key-value pair. অর্থাৎ কিছু key(variable) এবং তাদের corresponding value. এটি ও JSON ফরমেটে রিপ্রেজেন্ট করা হয়।

Workspace

Workspace হচ্ছে postman এর সব চেয়ে উপরের লেভেলের ইলিমেন্ট। একটি API রিকোয়েস্ট এর মধ্যে অনেক গুলো টেস্ট থাকতে পরে আবার একটি collection এর মধ্যে অনেক গুলো রিকোয়েস্ট থাকতে পারে ঠিক সেই ভাবে workspace এর মধ্যে অনেক গুলো collection এবং enviroment ইত্যাদি থাকতে পারে। যখন আমরা একাধিক প্রোজেক্ট এর API নিয়ে কাজ করবো তখন এই ফিচারটি কাজে আসবে।

প্রি-রিকোয়েস্ট এবং টেস্টস্ক্রিপ্ট লেখা

শুরুতে একটা sceniro এর কথা চিন্তা করি, ধরি আমরা একটি অ্যাপ্লিকেশনের API টেস্ট করবো এবং অ্যাপ্লিকেশনের কিছু API Endpoint এক্সেস করতে Authorizarion টোকেন যুক্ত করতে হয়। এখানে একটা approach হতে পারে আমরা রিকোয়েস্ট যুক্ত করার সময় নিজেরা একটি টোকেন যুক্ত করতে পারি কিন্তু এটি একটি ভালো সমাধান নয় কারণ Authorizarion টোকেন যে কোনো সময় expired হতে পারে। একটি ভালো সমাধান হতে পারে প্রথমে আমরা একটি Login API Endpoint কল করবো এবং যখন response আসবে তখন Authorizarion টোকেন global variable হিসেবে সেইভ করবো। পরে যে সকল রিকোয়েস্টে Authorization token প্রয়োজন হবে সেগুলোর প্রি-রিকোয়েস্ট স্ক্রিপ্টে global variable থেকে Authorizarion টোকেন যুক্ত করার কোড লিখবো। এটা হচ্ছে প্রি-রিকোয়েস্ট স্ক্রিপ্ট এর একটি ইউজ কেস। রিকোয়েস্টের টেস্ট স্ক্রিপ্টে আমরা জাভাস্ক্রিপ্ট ব্যবহার করে assertion কোড লিখতে পারি। Postman এর কিছু প্রি-ডিফাইন কোড snippets আছে সেগুলো ব্যবহার করতে পারি।

উপরের ছবিতে আমরা একটি নতুন workspace (Blog workspace) ক্রিয়েট করলাম এবং এক সাথে Blog_ENV এবং Blog_Collection নামে যথাক্রমে নতুন environment এবং collection ক্রিয়েট করলাম। কালেকশনটিতে একটি Post রিকোয়েস্ট আছে যেটির নাম Login এবং রিকোয়েস্ট বডিতে login credential দেয়া আছে। রিকোয়েস্ট করার পর response এর মধ্যে Authorizarion টোকেন পেলাম।

Login রিকোয়েস্টের টেস্ট স্ক্রিপ্টের প্রথমে দুইটি assertion কোড লিখলাম। এর একটি হচ্ছে response status 200 কিনা এবং অপরটি হচ্ছে Authorization টোকেনের দৈর্ঘ্য ৪০ কিনা। আমরা ইচ্ছা করলে আরো জটিল asseertion লিখতে পারি। তারপর Authorization টোকেনটি global variable হিসবে সেইভ করলাম (সবুজ বক্স) ডানপাশে আমাদের কিছু কোড snippets দেয়া আছে প্রয়োজন হলে এগুলো ব্যবহার করতে পারি

তারপর একটি GET রিকোয়েস্ট যুক্ত করলাম যেটি কিনা Authorizarion টোকেন ছাড়া সফল রেসপন্স করবে না। এটির প্রি-রিকোয়েস্ট স্ক্রিপ্টে পূর্বের সেইভ করা golbal variable টি রিকোয়েস্ট header এর মধ্যে Authorizarion টোকেন হিসেবে যুক্ত করলাম। এখন কালেকশনটি রান করলে প্রথমে login রিকোয়েস্ট global variable সেইভ করবে এবং পরের রিকোয়েস্ট গুলো global variable ব্যবহার করবে।

কালেকশন রান করা

কালেকশন রান করার জন্য Postman এর নিজস্ব ইন্টারফেইস আছে এছাড়া টার্মিনাল থেকে রান করার জন্য newman নামক একটি Dependencies ইন্সটল করে রান করতে পারি। newman এর মাধ্যম Continuous Integration এ Postman Collection যুক্ত করতে পারি।

আজ এপর্যন্তই। কথা হবে পরের কোন একটা ব্লগ নিয়ে।