آزمایش Web APIs توسط افزونه Rest Client
نویسنده: عثمان رحیمی
تاریخ: ۱۳۹۹/۱۱/۱۳ ۱۶:۲۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
} public class PeopleRepository
{
private List<Person> _people;
public PeopleRepository()
{
_people = new List<Person> {
new Person{ Id=1,Age=28,Name="Uthman"},
new Person{ Id=2,Age=27,Name="Vahid"},
new Person{ Id=3,Age=26,Name="Hadi"},
new Person{ Id=4,Age=25,Name="Saman"},
new Person{ Id=5,Age=20,Name="Sirwan"},
};
}
public List<Person> GetAll()
{
return _people;
}
} [Route("api/people")]
public class PeopleController : Controller
{
PeopleRepository _repository;
public PeopleController()
{
_repository = new PeopleRepository();
}
[HttpGet("")]
public IActionResult Get()
{
return Ok(_repository.GetAll());
}
[HttpGet("{id:int}")]
public IActionResult Get(int id)
{
return Ok(_repository.GetAll().FirstOrDefault(p => p.Id == id));
}
[HttpPost]
public IActionResult Post([FromBody]Person person)
{
return Ok(person);
}
[HttpPut("{id:int}")]
public IActionResult Put(int id,[FromBody] Person person)
{
if (id != person.Id)
return BadRequest();
return Ok(person);
}
[HttpDelete("{id:int}")]
public IActionResult Delete(int id)
{
return Ok();
}
[HttpPost("avatar")]
public IActionResult Post(IFormFile file)
{
return Ok();
}
} GET http://localhost:59416/api/people
تا به اینجا توانستیم فقط با نوشتن آدرس API مورد نظر، آن را فراخوانی کنیم.
برای ارسال پارامترهایی در هدر درخواست فقط کافیست دقیقا در خط پایین آدرس، به صورت field-name:field-value، هر پارامتری را که میخواهید، به همراه درخواست ارسال کنید. برای نمونه برای API لیست افراد که در بالا تست کردیم، میتوانیم هدر را به صورت زیر تنظیم نماییم :
GET http://localhost:59416/api/people Content-Type: application/json
اجرای درخواست GET برای دریافت یک شخص خاص
GET http://localhost:59416/api/people/1
خروجی آن به صورت زیر میباشد
درخواست POST برای درج کاربر جدید:
POST http://localhost:59416/api/people
content-type: application/json
{
"id": 10,
"name": "ali",
"age":37
} بعد از هدرهای درخواست، یک خط خالی ایجاد کنید و پایینتر از خط خالی، میتوانید مقادیر body درخواست را وارد نمایید.
درخواست PUT برای آپدیت یک شخص :
PUT http://localhost:59416/api/people/3
content-type: application/json
{
"id": 3,
"name": "ali",
"age":37
} درخواست DELETE برای حذف شخص:
DELETE http://localhost:59416/api/people/3 content-type: application/application/json
ارسال توکن اعتبارسنجی :
در صورتی که یک API نیاز به اعتبار سنجی دارد و باید توکن را به همراه درخواستی ارسال نمایید، میتوانید در هدر درخواست، همانند زیر، توکن را ارسال نمایید
GET http://localhost:59416/api/people content-type: application/json Authorization: Bearer token
آپلود فایل:
یکی از API هایی که در مثال ابتدای مقاله داشتیم، مربوط به آپلود فایل آواتار هست که از ورودی، یک IFormFile را به عنوان ورودی دریافت میکند. برای آپلود فایل به کمک افزونه Rest Client میتوانیم به صورت زیر فایل را ارسال نماییم
POST http://localhost:59416/api/people/avatar Content-Type: multipart/form-data; boundary=----MyBoundary ------MyBoundary Content-Disposition: form-data; name="file";filename="Studio" content-type: image/png < C:\Users\rahimi\Downloads\Studio.png ------MyBoundary--
قبل از آدرس فایل، وجود > ضروری میباشد.
فعال سازی دکمه Send Request به ازای هر آدرس:
اگر در یک فایل، چند آدرس را همانند عکس زیر داشته باشید، فقط یک دکمهی Send Request وجود خواهد داشت که کلیک بر روی آن منجر به فراخوانی اولین url میشود.
برای داشتن یک دکمه Send Request به ازای هر API، باید بین هر کدام از API ها، حداقل سه تا # قرار دهید.
### Get All People
GET http://localhost:59416/api/people
content-type: application/json
### Get Person
GET http://localhost:59416/api/people/1
### Create
POST http://localhost:59416/api/people
content-type: application/json
{
"id": 10,
"name": "ali",
"age":37
}
### Edit person
PUT http://localhost:59416/api/people/3
content-type: application/json
{
"id": 3,
"name": "ali",
"age":37
}
### Delete person
DELETE http://localhost:59416/api/people/3
content-type: application/application/json
### Upload Avatar
POST http://localhost:59416/api/people/avatar
Content-Type: multipart/form-data; boundary=----MyBoundary
------MyBoundary
Content-Disposition: form-data; name="file";filename="Studio"
content-type: image/png
< C:\Users\rahimi\Downloads\Studio.png
------MyBoundary-- افزونهی Rest Client، فراتر از توضیحات این مقاله میباشد. در صورت علاقه و برای مطالعه بیشتر در مورد آن، میتوانید به لینک صفحه افزونه مراجعه نمایید.