سلام :)
قسمت های قبلی رو اینجا میتونید ببینید.
پیاده سازی پروژه API در دات نت ، قسمت اول ، معماری پیاز (Onion Architecture)
پیاده سازی پروژه API در دات نت ، قسمت دوم ، ApplicationServices و DataLayer
پیاده سازی پروژه API در دات نت ، قسمت سوم ، EndPoint توسط RestAPI
پیاده سازی پروژه API در دات نت ، قسمت چهارم ، RestAPI Authentication Jwt
پیاده سازی پروژه API در دات نت ، قسمت پنجم ، عملیات CRUD در RestAPI
البته هنوز از کارمون مونده ولی سورس کامل این مقالات رو میتونید از اینجا ببینید.
تا اینجای کار سرویس UserExamService رو کامل کردیم و از متد MakeExam در پروژه ی Api در کنترلر ExamController استفاده کردیم و تست هم انجام دادیم و میتونیم آزمون های خودمون رو اضافه (Insert) کنیم.
در این مقاله ی اکشن های GetAll Update Delete رو پیاده میکنیم تا عملیات CRUD ما کامل بشه البته سرویس اونها رو داخل UserExamService.cs نوشتیم و فقط باید در کنترلر ExamController اکشن های اونها رو کامل کنیم .
ابتدا با اکشن GetAll شروع میکنیم که قرار هستش آزمون های کاربر رو به ما برگردونه .
[HttpGet("GetAll")] [Authorize] public IActionResult GetAll([FromQuery] string pageNumber= "1", string pageSize= "5") { var result = _userexamService.GetExam( int.Parse( pageNumber), int.Parse( pageSize), getCurrentUserMobile()); return Ok(result); }
در این اکشن ابتدا ار HTTPGet استفاده کردیم چون قصد داریم اطلاعات رو بخونیم ، فیلتر [Authorize] هم به منظور چک کردن کاربر قبل از انجام اکشن هستش ، ورودی اکشنمون همانند ورودی متد GetExam سرویس UserExamService ، شماره صفحه و تعداد آیتم هایی که در هر صفحه میخواهیم نمایش بدیم هستش ، البته در اینجا اطلاعات ورودیمون رو از حالت [FromQuery] خوندیم که منظور خوندن اطلاعات از URL درخواست هستش .در ادامه ورودی های شماره صفحه و تعداد نمایش در هر صفحه رو به نوع Int تبدیل کرده و شماره موبایل کاربری که توکن رو ارسال کرده رو از getCurrentUserMobile میخونیم و به سرویس UserExamService ارسال میکنیم و نتیجه رو به خروجی میفرستیم. پروژه رو اجرا میکنیم تا تست کنیم ، برای تست هم از Postman استفاده میکنیم و قبل از انجام باید باید نام کاربری و پسورد رو بگیریم ، از همون یو ای Swagger استفاده میکنیم عملیات لاگین رو انجام میدیم و توکن رو دریافت میکنیم.
سپس در Postman یک درخواست از نوع GET اضافه میکنیم ، آدرس اکشن و مقادیر pageNumber و pageSize رو داخل کوئری استرینگ میزاریم به شکل زیر
https://localhost:7229/api/Exam/GetAll?pageNumber=1&pageSize=5
به تب Authorization میریم نوع رو Bearer Token میزاریم و توکن که در لاگین دریافت کردیم رو داخل Token میزاریم. سپس اجرا میکنیم.
میبینیم که در خروجی آزمون های کاربر ارسال شده که همون لیست از مدل UserExamItem هستش ، برگشت داده میشود.
میریم سراغ اکشن Update یا همون ویرایش آزمون .
[HttpPut("Update")] [Authorize] public IActionResult Update([FromBody] EditUserExamDto editModel) { var result = _userexamService.Edit(editModel, getCurrentUserMobile()); return Ok(result.Id); }
در اینجا از HTTPPut استفاده میکنیم چون عملیات ما آپدیت هستش ، ورودی ما مدل EditUserExamDto هستش که اون رو در پروژه ی ApplicationServices ، پوشه ی Src 01.Core ApplicationServices Models UserExam میسازیم.
در سرویس هم همون DTO ورودیمون و شماره موبایل کاربر رو ارسال میکنیم و آی دی آزمون ویرایش شده رو به عنوان خروجی برمیگردونیم. خب این مورد رو هم در Postman تست میکنیم. آدرسمون https://localhost:7229/api/Exam/Update هستش ار نوع PUT و در بادی درخواست محتویات یک EditUserExamDto رو ارسال میکنیم ، به شکل زیر
خب میبینیم که Update با موفقیت انجام شد و آی دی آیتم ویرایش شده به عنوان خروجی برگشت داده شد.
در آخر میمونه عملیات حذف کردن که اگر خاطرتون باشه کافیه فقط فیلد IsDeleted موجودیت UserExam رو مقدار True بزاریم که همان حذف منطقی یا SoftDelete انجام میدیم ، این کار رو داخل سرویس UserExamService انجام دادیم .
برای اکشن Delete در اینجا از HTTPDelete استفاده میکنیم چون عملیات ما حذف هستش.
[HttpDelete("Delete")] [Authorize] public IActionResult Delete([FromQuery] int Id) { var result = _userexamService.Delete(Id, getCurrentUserMobile()); return Ok(result); }
در ورودی آی دی آیتمی که میخوایم حذف کنیم رو از کوئری استرینگ در URL میخونیم و توسط متد Delete سرویس UserExamService ، حذف ما انجام میشه ، البته در سرویس این مورد رو چک کردیم که آزمونی که قراره حذف بشه برای همون کاربری باشه که توکن فرستاده ، در خروجی هم یک مقدار True یا False به عنوان تنیجه برمیگردونیم. خب این مورد رو هم تست کنیم ، آدرس و آی دی آیتمی که میخوایم حذف کنیم رو در آدرس وارد میکنیم .
https://localhost:7229/api/Exam/Delete?Id=1
نوع عملیات هم Delete هستش ، سپس توکن رو در قسمت Authorization وارد میکنیم و درخواست رو ارسال میکنیم.
خروجی ما مقدار True هستش و آیتم از دیتا بیس نیز حذف شد.
در نهایت ما از متد های GetAll Update Delete در قبلتر در سرویس UserExamService نوشته بودیم داخل پروژه ی EndPoint که یک RestApi بود استفاده کردیم .
خب اینجا کارمون تموم میشه و میتونید سورس کامل این مقالات رو میتونید از اینجا ببینید.
ممنون از وقتی که گذاشتید و امیدوارم از این مطالب خوشتون اومده باشه و به دردتون بخوره :)
پیاده سازی پروژه API در دات نت ، قسمت اول ، معماری پیاز (Onion Architecture)
پیاده سازی پروژه API در دات نت ، قسمت دوم ، ApplicationServices و DataLayer
پیاده سازی پروژه API در دات نت ، قسمت سوم ، EndPoint توسط RestAPI
پیاده سازی پروژه API در دات نت ، قسمت چهارم ، RestAPI Authentication Jwt
پیاده سازی پروژه API در دات نت ، قسمت پنجم ، عملیات CRUD در RestAPI
پیاده سازی پروژه API در دات نت ، قسمت ششم ( قسمت آخر ) ، عملیات CRUD در RestAPI پارت دوم