شروع به کار با DNTFrameworkCore - قسمت 4 - پیادهسازی CRUD API موجودیتها
نویسنده: سالار ربال
تاریخ: ۱۳۹۷/۱۲/۰۲ ۱۹:۱۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
PM> Install-Package DNTFrameworkCore.Web
PM> Install-Package DNTFrameworkCore.Web.EntityFramework
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build()
.MigrateDbContext<ProjectDbContext>()
.Run();
}
//...
} [Route("api/[controller]")]
public class BlogsController : CrudController<IBlogService, int, BlogModel>
{
public BlogsController(IBlogService service) : base(service)
{
}
protected override string CreatePermissionName => PermissionNames.Blogs_Create;
protected override string EditPermissionName => PermissionNames.Blogs_Edit;
protected override string ViewPermissionName => PermissionNames.Blogs_View;
protected override string DeletePermissionName => PermissionNames.Blogs_Delete;
}
var data = JSON.parse(responseBody)
pm.environment.set("token", data.token); حال برای ارسال درخواستهای HTTP به BlogsController به شکل زیر عمل کنید:
query={"page":1,"pageSize":100,"filter":{"logic":"and","filters":[{"field":"title","value":"Blog1","operator":"startswith"}]}}
{{endpoint}}/blogs/10 [Route("api/[controller]")]
public class UsersController : CrudController<IUserService, long, UserReadModel, UserModel>
{
private readonly ILookupService _lookupService;
public UsersController(IUserService service, ILookupService lookupService) : base(service)
{
_lookupService = lookupService ?? throw new ArgumentNullException(nameof(lookupService));
}
protected override string CreatePermissionName => PermissionNames.Users_Create;
protected override string EditPermissionName => PermissionNames.Users_Edit;
protected override string ViewPermissionName => PermissionNames.Users_View;
protected override string DeletePermissionName => PermissionNames.Users_Delete;
[HttpGet("[action]")]
[PermissionAuthorize(PermissionNames.Users_Create, PermissionNames.Users_Edit)]
public async Task<IActionResult> RoleList()
{
var result = await _lookupService.ReadRolesAsync();
return Ok(result);
}
}
باتوجه به اینکه UserRole به عنوان یکی از وابستگیهای موجودیت User محسوب میشود، در پاسخ درخواست GET مرتبط با کاربری با شناسه 2، roles آن، لیستی از UserRoleModel هستند که به عنوان یک DetailModel طراحی شده است. به عنوان مثال برای حذف اتصال یک گروه کاربری باید درخواست PUT را به شکل زیر ارسال کنید:
اینبار اگر برای درخواست GET کاربر با شناسه 2 اقدام کنیم، به خروجی زیر خواهم رسید:
{
"userName": "rabbal",
"displayName": "غلامرضا ربال",
"password": null,
"isActive": false,
"roles": [],
"permissions": [],
"ignoredPermissions": [],
"rowVersion": "AAAAAAACGxI=",
"id": 2
}
PERMISSION:Users_Create --> Users_Create
{
"name": "Administrators",
"description": "حذف گروه کاربری پیش فرض «مدیران سیستم» باعث ایجاد اختلال در کارکرد صحیح سیستم خواهد شد.",
"permissions": [
{
"name": "Blogs_View1",
"id": 1,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Tasks_Edit",
"id": 2,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Tasks_Create",
"id": 3,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Tasks_View",
"id": 4,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Users_Delete",
"id": 5,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Users_Edit",
"id": 6,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Users_Create",
"id": 7,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Tasks_Delete",
"id": 8,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Users_View",
"id": 9,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Roles_Edit",
"id": 10,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Roles_Create",
"id": 11,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Roles_View",
"id": 12,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Blogs_Delete",
"id": 13,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Blogs_Create1",
"id": 15,
"trackingState": "Modified",
"modifiedProperties": null
},
{
"name": "Blogs_UseCase",
"trackingState": "Added"
},
{
"name": "Blogs_Edit",
"id": 14,
"trackingState": "Deleted"
},
],
"rowVersion": "AAAAAAAAF3M=",
"id": 1
} {
"name": "Administrators",
"description": "حذف گروه کاربری پیش فرض «مدیران سیستم» باعث ایجاد اختلال در کارکرد صحیح سیستم خواهد شد.",
"permissions": [
{
"name": "Blogs_View1",
"id": 1,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Tasks_Edit",
"id": 2,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Tasks_Create",
"id": 3,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Tasks_View",
"id": 4,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Users_Delete",
"id": 5,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Users_Edit",
"id": 6,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Users_Create",
"id": 7,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Tasks_Delete",
"id": 8,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Users_View",
"id": 9,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Roles_Edit",
"id": 10,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Roles_Create",
"id": 11,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Roles_View",
"id": 12,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Blogs_Delete",
"id": 13,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Blogs_Create1",
"id": 15,
"trackingState": "Unchanged",
"modifiedProperties": null
},
{
"name": "Blogs_UseCase",
"id": 17,
"trackingState": "Unchanged",
"modifiedProperties": null
}
],
"rowVersion": "AAAAAAAAF3Q=",
"id": 1
}