<div align="right" dir="rtl">

<p align="center" dir="rtl">بسم الله الرحمن الرحیم</p>

# معرفی Postman


## Postman چیست و راهنمای کار با آن

در این مطلب قصد داریم در مورد راهنمای استفاده از postman  و روش تست وب سرویس با postman را خدمتتان توضیح دهیم.

## معرفی کوتاه

به نظر می رسد اگر بخواهیم در یک جمله مهمترین خصوصیت و ویژگی کاربردی نرم افزار و افزونه Postman را نام ببریم باید چنین بگوییم:
Postman امکان تست ، اجرا و بررسی کد ها و متد های نوشته شده WebAPI را برای ما بسیار آسان می سازد.
در محیط برنامه نویسی وقتی یک Web API را پیاده سازی می کنیم برای تست آن در همان محیط ، ناچاریم کد هایی سمت کلاینت بنویسیم که بتوانیم خروجی آن را بررسی نماییم، یعنی باید کد اصلی که قرار هست بنویسیم را شبیه سازی کنیم، اما همیشه انجام این کار برای ما  از نظر زمانی مقرون به صرفه نیست و ما دوست داریم بسیار سریع خروجی برنامه خود را مشاهده کنیم و در زمان هایی که در کد های خود تغییر می دهیم به آسانی بتوانیم خروجی و نتیجه تغییرات خود را نیز ملاحظه نماییم. همچنین در برخی از مواقع تست خروجی توسط برنامه اصلی کار دشوار و پر چالشی است. بنابرین وجود یک نرم افزار واسط برای این کار بسیار کارآمد بوده و استفاده از آن به ما کمک شایانی خواهد کرد.

## شکل های مختلف Postman

Postman به چند صورت به مشتریان و کاربران ارایه شده است که در وب سایت اصلی نرم افزار در صفحه Apps قرار داده شده اند که برای سیستم عامل های  ویندوز، مکینتاش و لینوکس تهیه و ارایه شده است. همچنین این نرم افزار به صورت افزونه Google Chrome  نیز در اختیار کاربران و برنامه نویسان قرار گرفته است که می توانید با استفاده از لینک Postman Addon آن را به مروگر خود اضافه نمایید. ممکن است برای اضافه کردن Addon این نرم افزار نیاز به پروکسی (فیلتر شکن / وی پی ان) داشته باشید. بیش از 3/700/000 نفر تا به امروز این افزونه را به مرورگر خود اضافه کرده اند و از امکانات آن استفاده می کنند.
Addon مربوطه و یا برنامه تحت سیستم عامل مورد نظر خود را نصب نمایید که در ادامه راه باید آن را اجرا نمایید تا بتوانیم از آن استفاده کنیم. برای استفاده از Postman بهتر است که  داخل برنامه و یا وب سایت مربوطه یک حساب کاربری برای خود ایجاد کنید و تا بتوانید لاگین کرده و از برنامه استفاده نمایید.

در این مقاله ما از یک برنامه از قبل نوشته شده برای آموزش استفاده خواهیم کرد، بنابراین فرض می کنیم مخاطب این مقاله نحوه پیاده سازی یک Web API را می داند و ما در این جا از ارایه آموزش نوشتن یک برنامه Web API صرف نظر می نماییم. در صورت نیاز به یاد گیری مباحث مربوط به Web API به دیگر مقالات ما مراجعه فرمایید.
از بخش ضمایم این مطلب که در پایین صفحه قرار دارد فایل  Todo.zip را دریافت کرده و آن را از حالت فشرده خارج ساخته و با Visual Studio 2017 آن را اجرا نمایید تا Solution باز گردد تا بتوانیم آن را اجرا کنیم. برای تست Web API های نوشته شده باید برنامه ما ابتدا جایی به صورت دائمی هاست شده باشد و یا از  IIS Express تعبیه شده درون Visual Studio استفاده نماییم و اجرای برنامه باعث خواهد شد که Web API ما توسط IIS Express هاست گردد.  اگر برنامه را اجرا کنید صفحه زیر را مشاهده خواهید کرد. ( ممکن است اسامی که شما می بینید متفاوت با آن چیزی باشد که در تصویر زیر مشاهده می کنید.)

<p align="center">
  <img src="img/postman/1.jpg" />
</p>
می توانید با استفاده از لینک های   Create New ، Delete ،  Edit  و Details صحت عملکرد برنامه را امتحان نمایید. در این برنامه چهار Web API پیاده سازی شده است که کد آن ها در فایل  TodoApiController.cs داخل پوشه  Controllers قرار دارد که  میتوانید آن را بررسی نمایید. اگر لینک http://localhost:63274/swagger/ را در بخش آدرس مرورگر وارد کرده و آن را مشاهده نمایید صفحه زیر را خواهید دید که لیست Web API های نوشته شده را نشان خواهد داد. ( توجه داشته باشید که در صورت متفاوت بودن عدد پورت داخل لینک آن را به پورت مورد نظر تغییر دهید )
 

<p align="center">
  <img src="img/postman/2.jpg" />
</p>

حال می خواهیم این چهار Web API را تست کنیم.

Postman را اجرا کنید تا صفحه زیر نمایان گردد.

<p align="center">
  <img src="img/postman/3.jpg" />
</p>

## تست متد GET

ابتدا می خواهیم که متد GET نوشته شده را آزمایش نماییم. برای این کار باید سه کار انجام دهیم
1-  ابتدا باید نوع HTTP Action مورد نظر خود را از لیست انتخاب نماییم که برای این متد ، GET است.

<p align="right">
  <img src="img/postman/4.jpg" />
</p>
2 - سپس آدرس (URL) مربوط به Web API خود را در  قسمت مربوطه مقابل HTTP Action انتخاب شده وارد نمایید.
آدرس مربوط به متد GET :
http://localhost:63274/api/GetAllTodos
<p align="right">
  <img src="img/postman/5.jpg" />
</p>
3- حال روی کلید آبی Send کلیک کنید تا Web API مربوطه اجرا شده و نتیجه برای ما نمایش داده شود. نتیجه اجرا به شکل زیر خواهد بود:

<p align="center">
  <img src="img/postman/6.jpg" />
</p>

همانطور که مشاهده می فرمایید لیست ما به صورت خروجی Json قابل مشاهده است. بنابراین تست ما با موفقیت انجام گرفته و برنامه ما (Web API) به طور صحیح کار می کند.


اگر برنامه اشاره شده بالا، که با Visual Studio اجرا کردیم را فعال نمی کردیم ، یعنی Web API ما اجرا نمی شد، بدین معنی بود که چنین Web API ای اصلا وجود خارجی ندارد، و در این حالت کلید Send را کلیک می کردیم. خروجی مانند شکل زیر را مشاهده می کردیم:
<p align="center">
  <img src="img/postman/7.jpg" />
</p>
همانطور که مشاهده می فرمایید Postman دلایل احتمالی ایجاد این خطا را به ما نشان می دهد.

## تست متد Post

حال می خواهیم متد POST نوشته شده را آزمایش نماییم. برای این کار باید چهار کار انجام دهیم
1- ابتدا  در نرم افزار Postman یک تب جدید برای تست این متد باز می کنیم و سپس باید نوع HTTP Action مورد نظر خود را از لیست انتخاب نماییم که برای این متد ، POST است.
2 - سپس آدرس (URL) مربوط به Web API خود را در  قسمت مربوطه مقابل HTTP Action انتخاب شده وارد نمایید.
آدرس مربوط به متد POST :
http://localhost:63274/api/AddTodo
3-  حال باید ورودی مورد نیاز تابع AddToDo را که در کلاس TodoApiController.cs قرار دارد را در اختیار این URL قرار دهیم. این ورودی باید به صورت Json باشد.
کلاس مربوط به Object ما به شک زیر است که یک آبجکت ToDo است:
<div align="left" dir="ltr">
public class Todo : IBaseEntity
{
  public Todo();

  public int Id { get; set; }
  public string Name { get; set; }
}
</div>
در تب زیرین ، سومین Tab را که Body است انتخاب می کنیم و سپس از  موارد زیر آن تب،  روی  Raw کلیک می کنیم تا انتخاب شود، برای دادن ورودی به تابع Post مان باید مقدار Json ای را که آماده می کنیم در اینجا Paste کنیم.
در نظر داشته باشید که قالب ورودی تابع باید از روی لیست آبشاری JSON (Application / JSON) انتخاب شده باشد.
مقدار ورودی json ما می تواند چنین باشد:

<div align="left" dir="ltr">

"id" : 5,
"name" : "buy a theater ticket"
}
</div>
این عبارت را در قسمت Body  که در بالا اشاره کردیم Paste کنید تا همه چیز آماده گردد.
<p align="center">
  <img src="img/postman/8.jpg" />
</p>
4- حال روی کلید آبی Send کلیک کنید تا Web API مربوطه اجرا شده و نتیجه برای ما نمایش داده شود. نتیجه اجرا به شکل زیر خواهد بود:
<p align="center">
  <img src="img/postman/9.jpg" />
</p>
اگر نتیجه موفقیت آمیز باشد و خطایی از جانب WebAPI ایجاد نشده باشد، وضعیت نمایش داده شده مقدار 200 را خواهد داشت که در شکل بالا هم می بینیم.
<p align="center">
  <img src="img/postman/10.jpg" />
</p>
aاگر موس را روی کلمه Status نگه داریم یک پنجره ای ظاهر خواهد شد که  توضیحاتی در مورد این وضعیت با ما ارایه می دهد. ( مانند شکل زیر : )
<p align="center">
  <img src="img/postman/11.jpg" />
</p>

زمان اجرای این API نیز مقابل عبارت Time با واحد میلی ثانیه نمایش داده شده است. همچنین اگر موس را روی کلمه Size نگه داریم ، پنجره ای مشابه پنجره زیر را مشاهده خواهید کرد:
<p align="center">
  <img src="img/postman/12.jpg" />
</p>

که در اینجا هم میزان حجم بدنه و هدر جواب API ی را که به سمت ما ارسال شده است نمایش می دهد.

مقداری را که متد Post بازگشت داده است را در قسمت Body می بینید. مقدار id که بازگردانده شده است ممکن است با مقداری که ما به سمت WebAPI ارسال کرده ایم متفاوت باشد. چون این مقدار ممکن است کلید اصلی جدول ما باشد و سیستم به صورت خودکار آخرین عدد قابل تخصیص را به رکورد مورد نظر تعیین کرده و برای ما بازگشت داده باشد. حال اگر صفحه  Index را که لیست ToDo ها در آن نمایش داده می شوند را Refresh کنیم نتیجه را چنین خواهیم دید:

<p align="center">
  <img src="img/postman/13.jpg" />
</p>


## تست متد Put

حال نوبت آن رسیده است تا متد PUT نوشته شده را آزمایش نماییم. تست این متد دقیقا مانند تست متد POST است و  برای این کار نیز باید چهار کار انجام دهیم.
1- ابتدا  در نرم افزار Postman یک تب جدید برای تست متد PUT باز می کنیم و سپس باید نوع HTTP Action مورد نظر خود را از لیست انتخاب نماییم که برای این متد ، PUT است.
2 - سپس آدرس (URL) مربوط به Web API خود را در  قسمت مربوطه مقابل HTTP Action انتخاب شده وارد نمایید.
آدرس مربوط به متد PUT :
http://localhost:63274/api/UpdateTodo
3-  حال باید ورودی مورد نیاز تابع UpdateTodo را که در کلاس TodoApiController.cs قرار دارد را در اختیار این URL قرار دهیم. این ورودی نیز باید به صورت Json باشد.
طبق مثال قبل در تب زیرین ، سومین Tab را که Body است انتخاب می کنیم و سپس از  موارد زیر آن تب،  روی  Raw کلیک می کنیم تا انتخاب شود، برای دادن ورودی به تابع PUT مان باید مقدار Json ای را که آماده می کنیم در اینجا Paste کنیم.
در نظر داشته باشید که قالب ورودی تابع باید از روی لیست آبشاری JSON (Application / JSON) انتخاب شده باشد.
مقدار ورودی json ما می تواند چنین باشد:
( باید در نظر داشته باشیم که مقدار id که در عبارت Json قرار می دهیم باید معادل آن در لیست ما وجود داشته باشد. id را که در مثال قبلی WebAPI بازگشت داده بود را به عنوان ID در نظر می گیریم. عنوان مربوط به این id را تغییر می دهیم.

<div align="left" dir="ltr">
{
"id" : 5,
"name" : "Buy two Concert ticket"
}
</div>
این عبارت را در قسمت Body  که در بالا اشاره کردیم Paste کنید تا همه چیز آماده گردد.
4- حال روی کلید آبی Send کلیک کنید تا Web API مربوطه اجرا شده و نتیجه برای ما نمایش داده شود. نتیجه اجرا به شکل زیر خواهد بود:
<p align="center">
  <img src="img/postman/14.jpg" />
</p>
 

اگر نتیجه موفقیت آمیز باشد و خطایی از جانب WebAPI ایجاد نشده باشد، وضعیت نمایش داده شده مقدار 200 را خواهد داشت که در شکل بالا هم می بینیم.
مقداری را که متد PUT بازگشت داده است را در قسمت Body می بینید. مقدار id که بازگردانده شده است دقیقا Id همان رکوردی است که قصد ویرایش عنوان آن را داشتیم. حال اگر صفحه  Index را که لیست ToDo ها در آن نمایش داده می شوند را Refresh کنیم نتیجه را چنین خواهیم دید:

<p align="center">
  <img src="img/postman/15.jpg" />
</p>

اگر به جای آی دی 5 ، مقداری را وارد کنیم که معادل آن را در لیست رکورد های خود نداریم ، مثلا عدد 15،  و سپس کلید آبی Send را کلیک کنیم، نتیجه چنین خواهد بود:

<p align="center">
  <img src="img/postman/16.jpg" />
</p>

همانطور که مشاهده می کنید، نتیجه 204 No Content است.

## تست متد Delete

برای تست متد Delete چنین عمل می کنیم.
1- ابتدا  در نرم افزار Postman یک تب جدید برای تست متد Delete باز می کنیم و سپس باید نوع HTTP Action مورد نظر خود را از لیست انتخاب نماییم که برای این متد ، Delete است.
2 - سپس آدرس (URL) مربوط به Web API خود را در  قسمت مربوطه مقابل HTTP Action انتخاب شده وارد نمایید.
آدرس مربوط به متد DELETE :
http://localhost:63274/api/DeleteTodo/{id}
باید مقدار {id} را با کلید رکوردی که قصد حذف کردن آن را داریم جایگزین کنیم. برای امتحان، رکورد با شناسه 1 را حذف می کنیم. بنابراین URL ما چنین خواهد بود.
http://localhost:63274/api/DeleteTodo/1
3- حال مانند مثال های قبل روی کلید آبی Send کلیک کنید تا Web API مربوطه اجرا شده و نتیجه برای ما نمایش داده شود. نتیجه اجرا به شکل زیر خواهد بود:
<p align="center">
  <img src="img/postman/17.jpg" />
</p>

اینجا هم اگر نتیجه موفقیت آمیز باشد و خطایی از جانب WebAPI ایجاد نشده باشد، وضعیت نمایش داده شده مقدار 200 را خواهد داشت که در شکل بالا هم می بینیم.
اگر صفحه لیست رکورد ها را Refresh کنیم، خواهیم دید که رکورد مربوطه از لیست حذف شده است. در شکل زیر نتیجه را می بینیم.
<p align="center">
  <img src="img/postman/18.jpg" />
</p>

همانطور که ملاحظه فرمودید ما توانستیم به راحتی متد های Post، Put ، Get و Delete را تست نماییم. البته تست متد هایی مانند Put و Post برای آبجت های پیچیده به راحتی مثال های ارایه شده نیست، سختی آبجکت های پیچیده در تبدیل ورودی ها به Json است که بتوانیم آن را به عنوان ورودی متد Post و Put ارایه نماییم.

## تب های History و Collection

اگر دقت بفرمایید در سمت چپ نرم افزار Postman دو tab را مشاهده می کنیم به نام های  History و Collections. همانطور که از نام تب History پیداست ، در این قسمت تاریخچه ای از آخرین درخواست های ارسال شده به Postman نگهداری می شود. این تاریخچه  به ما کمک می کند که برای تست هر کدام از این متد ها، دیگر مجبور نباشیم مراحل مربوط به انتخاب نوع متد، وارد کردن Url مربوطه، انتخاب  نوع ورودی، وارد کردن مقدار ورودی و ... را از اول تکرار کنیم. تنها با انتخاب آیتم مربوطه از بخش History و با کلیک روی کلید Send،   میتوانیم API مربوطه را تست نماییم.
اگر موس را روی هر کدام از آیتم های داخل تب History  نگه داریم ، علامت + را مشاهده خواهیم:
<p align="center">
  <img src="img/postman/19.jpg" />
</p>

اگر روی علامت و کلید + روی متد Get کلیک کنیم صفحه زیر ظاهر خواهد شد.
 

همانطور که مشاهده می فرمایید می توانید متد مربوطه را به یک Collection موجود اضافه نمایید  و یا با کلیک روی عبارت + Create Collection یک Collection جدید ایجاد و متد مربوطه را به این کالکشن جدید اضافه نمایید. در اصل این کار به ما کمک می کند تا بتوانیم Web Api ها خود را برای تست آنها، دسته بندی نماییم و آن را به طور ثابت در حافظه نرم افزار Postman ثبت کنیم. ما  چند متد تست شده خودمان را تحت عنوان API Test ذخیره می کنیم. سپس روی تب Collection کلیک می کنیم و نتیجه زیر را خواهیم دید:
<p align="center">
  <img src="img/postman/20.jpg" />
</p>

همانطور که مشاهده می فرمایید می توانید متد مربوطه را به یک Collection موجود اضافه نمایید  و یا با کلیک روی عبارت + Create Collection یک Collection جدید ایجاد و متد مربوطه را به این کالکشن جدید اضافه نمایید. در اصل این کار به ما کمک می کند تا بتوانیم Web Api ها خود را برای تست آنها، دسته بندی نماییم و آن را به طور ثابت در حافظه نرم افزار Postman ثبت کنیم. ما  چند متد تست شده خودمان را تحت عنوان API Test ذخیره می کنیم. سپس روی تب Collection کلیک می کنیم و نتیجه زیر را خواهیم دید:
 
<p align="center">
  <img src="img/postman/21.jpg" />
</p>

هر کدام از Collection های ایجاد شده را می توان به یک فایل Json تبدیل ( Export ) کرد. تا بتوانیم در زمان دیگری آن را دوباره در این نرم افزار وارد ( Import ) نماییم. ممکن است به هر دلیلی برای نرم افزار مشکلی پیش بیاید که بخواهیم سیستم عامل خود را تغییر دهیم و یا اصلا بخواهیم یک Collection خاصی را برای یک شخص دیگری که از همین نرم افزار استفاده می کند، ارسال نماییم تا ایشان هم بتوانند از این Collection استفاده نمایند. اگر موس را روی عنوان کالکشن  نگه داریم،  کلیدی به علامت ... ظاهر می شود که با کلیک روی آن  منویی ظاهر خواهد شد که امکاناتی را در اختیار ما قرار خواهد داد. به شکل زیر دقت فرمایید:
<p align="center">
  <img src="img/postman/22.jpg" />
</p>

با کلیک روی کلید Export صفحه ای ظاهر خواهد شد که به احتمال نسخه قالب مورد نظر را سوال خواهد کرد که آخری را انتخاب نمایید که فایل خروجی طبق آخرین استاندارد موجود ایجاد گردد. حال می توانیم فایل ایجاد شده را جایی برای خود ذخیره نماییم یا برای شخص دیگری ارسال کنیم. اگر بخواهیم همین فایل را بعدا بارگزاری کنیم می توانیم از منوی Import این کار را انجام دهیم:
<p align="center">
  <img src="img/postman/23.jpg" />
</p>

بعد از کلیک روی آن پنجره ای ظاهر شده و امکانات متعددی را در اختیار ما قرار می دهد. به شکل زیر توجه کنید:
<p align="center">
  <img src="img/postman/24.jpg" />
</p>

از همان منوی اول استفاده نموده و فایل مربوطه را انتخاب و Import نمایید.

[منبع](https://www.radcom.co/fa/kb/5347/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D8%A7%D9%81%D8%B2%D9%88%D9%86%D9%87-%D9%88-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-Postman)



<p align="center" dir="rtl">صلوات</p>
</div>