From ff4363dd61b60109fe8107c3bed1ab533e1a33b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 19 Sep 2017 11:44:47 +0300 Subject: [PATCH] Rest API Improvements #106: Can use Async in app service methods by hided from client url and proxies. --- .../AspNetCore/Mvc/DefaultUrlActionNameNormalizer.cs | 4 +++- .../Abp/Application/Services/AsyncCrudAppService.cs | 10 +++++----- .../Abp/Application/Services/IAsyncCrudAppService.cs | 10 +++++----- .../Abp/Http/DynamicProxying/IRegularTestController.cs | 6 +++++- .../PersonAppServiceClientProxy_Tests.cs | 10 +++++----- .../Abp/Http/DynamicProxying/RegularTestController.cs | 10 +++++++++- .../RegularTestControllerClientProxy_Tests.cs | 9 ++++++++- .../Abp/TestApp/Application/PersonAppService_Tests.cs | 2 +- 8 files changed, 41 insertions(+), 20 deletions(-) diff --git a/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DefaultUrlActionNameNormalizer.cs b/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DefaultUrlActionNameNormalizer.cs index 3219be76bb..56d7108b9f 100644 --- a/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DefaultUrlActionNameNormalizer.cs +++ b/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DefaultUrlActionNameNormalizer.cs @@ -12,7 +12,9 @@ namespace Volo.Abp.AspNetCore.Mvc return; } - context.ActionNameInUrl = HttpMethodHelper.RemoveHttpMethodPrefix(context.ActionNameInUrl, context.HttpMethod); + context.ActionNameInUrl = HttpMethodHelper + .RemoveHttpMethodPrefix(context.ActionNameInUrl, context.HttpMethod) + .RemovePostFix("Async"); } } } \ No newline at end of file diff --git a/src/Volo.Abp/Volo/Abp/Application/Services/AsyncCrudAppService.cs b/src/Volo.Abp/Volo/Abp/Application/Services/AsyncCrudAppService.cs index 966100513a..0ed329c655 100644 --- a/src/Volo.Abp/Volo/Abp/Application/Services/AsyncCrudAppService.cs +++ b/src/Volo.Abp/Volo/Abp/Application/Services/AsyncCrudAppService.cs @@ -72,7 +72,7 @@ namespace Volo.Abp.Application.Services AsyncQueryableExecuter = DefaultAsyncQueryableExecuter.Instance; } - public virtual async Task Get(TPrimaryKey id) + public virtual async Task GetAsync(TPrimaryKey id) { CheckGetPermission(); @@ -80,7 +80,7 @@ namespace Volo.Abp.Application.Services return MapToEntityDto(entity); } - public virtual async Task> GetList(TGetAllInput input) + public virtual async Task> GetListAsync(TGetAllInput input) { CheckGetAllPermission(); @@ -99,7 +99,7 @@ namespace Volo.Abp.Application.Services ); } - public virtual async Task Create(TCreateInput input) + public virtual async Task CreateAsync(TCreateInput input) { CheckCreatePermission(); @@ -111,7 +111,7 @@ namespace Volo.Abp.Application.Services return MapToEntityDto(entity); } - public virtual async Task Update(TPrimaryKey id, TUpdateInput input) + public virtual async Task UpdateAsync(TPrimaryKey id, TUpdateInput input) { CheckUpdatePermission(); @@ -125,7 +125,7 @@ namespace Volo.Abp.Application.Services return MapToEntityDto(entity); } - public virtual Task Delete(TPrimaryKey id) + public virtual Task DeleteAsync(TPrimaryKey id) { CheckDeletePermission(); diff --git a/src/Volo.Abp/Volo/Abp/Application/Services/IAsyncCrudAppService.cs b/src/Volo.Abp/Volo/Abp/Application/Services/IAsyncCrudAppService.cs index a42f2d872a..99a7a42bed 100644 --- a/src/Volo.Abp/Volo/Abp/Application/Services/IAsyncCrudAppService.cs +++ b/src/Volo.Abp/Volo/Abp/Application/Services/IAsyncCrudAppService.cs @@ -37,14 +37,14 @@ namespace Volo.Abp.Application.Services : IApplicationService where TEntityDto : IEntityDto { - Task Get(TPrimaryKey id); + Task GetAsync(TPrimaryKey id); - Task> GetList(TGetAllInput input); + Task> GetListAsync(TGetAllInput input); - Task Create(TCreateInput input); + Task CreateAsync(TCreateInput input); - Task Update(TPrimaryKey id, TUpdateInput input); + Task UpdateAsync(TPrimaryKey id, TUpdateInput input); - Task Delete(TPrimaryKey id); + Task DeleteAsync(TPrimaryKey id); } } diff --git a/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/IRegularTestController.cs b/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/IRegularTestController.cs index 7105b6edb6..f7cd96d7c2 100644 --- a/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/IRegularTestController.cs +++ b/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/IRegularTestController.cs @@ -1,7 +1,11 @@ -namespace Volo.Abp.Http.DynamicProxying +using System.Threading.Tasks; + +namespace Volo.Abp.Http.DynamicProxying { public interface IRegularTestController { int IncrementValue(int value); + + Task IncrementValueAsync(int value); } } diff --git a/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/PersonAppServiceClientProxy_Tests.cs b/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/PersonAppServiceClientProxy_Tests.cs index c2bef5bc7b..e4af66fa62 100644 --- a/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/PersonAppServiceClientProxy_Tests.cs +++ b/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/PersonAppServiceClientProxy_Tests.cs @@ -28,7 +28,7 @@ namespace Volo.Abp.Http.DynamicProxying { var firstPerson = _personRepository.GetList().First(); - var person = await _peopleAppService.Get(firstPerson.Id); + var person = await _peopleAppService.GetAsync(firstPerson.Id); person.ShouldNotBeNull(); person.Id.ShouldBe(firstPerson.Id); person.Name.ShouldBe(firstPerson.Name); @@ -37,7 +37,7 @@ namespace Volo.Abp.Http.DynamicProxying [Fact] public async Task GetList() { - var people = await _peopleAppService.GetList(new PagedAndSortedResultRequestDto()); + var people = await _peopleAppService.GetListAsync(new PagedAndSortedResultRequestDto()); people.TotalCount.ShouldBeGreaterThan(0); people.Items.Count.ShouldBe(people.TotalCount); } @@ -47,7 +47,7 @@ namespace Volo.Abp.Http.DynamicProxying { var firstPerson = _personRepository.GetList().First(); - await _peopleAppService.Delete(firstPerson.Id); + await _peopleAppService.DeleteAsync(firstPerson.Id); firstPerson = _personRepository.GetList().FirstOrDefault(p => p.Id == firstPerson.Id); firstPerson.ShouldBeNull(); @@ -58,7 +58,7 @@ namespace Volo.Abp.Http.DynamicProxying { var uniquePersonName = Guid.NewGuid().ToString(); - var person = await _peopleAppService.Create(new PersonDto + var person = await _peopleAppService.CreateAsync(new PersonDto { Name = uniquePersonName, Age = 42 @@ -80,7 +80,7 @@ namespace Volo.Abp.Http.DynamicProxying var firstPerson = _personRepository.GetList().First(); var uniquePersonName = Guid.NewGuid().ToString(); - var person = await _peopleAppService.Update( + var person = await _peopleAppService.UpdateAsync( firstPerson.Id, new PersonDto { diff --git a/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/RegularTestController.cs b/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/RegularTestController.cs index 61f8e49b35..477890a5df 100644 --- a/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/RegularTestController.cs +++ b/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/RegularTestController.cs @@ -1,4 +1,5 @@ -using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; using Volo.Abp.Application.Services; using Volo.Abp.AspNetCore.Mvc; @@ -15,5 +16,12 @@ namespace Volo.Abp.Http.DynamicProxying { return value + 1; } + + [HttpGet] + [Route("increment")] + public Task IncrementValueAsync(int value) + { + return Task.FromResult(value + 1); + } } } \ No newline at end of file diff --git a/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/RegularTestControllerClientProxy_Tests.cs b/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/RegularTestControllerClientProxy_Tests.cs index 9098371614..deaa8bf48c 100644 --- a/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/RegularTestControllerClientProxy_Tests.cs +++ b/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/RegularTestControllerClientProxy_Tests.cs @@ -1,4 +1,5 @@ -using Microsoft.Extensions.DependencyInjection; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; using Shouldly; using Xunit; @@ -20,5 +21,11 @@ namespace Volo.Abp.Http.DynamicProxying { _controller.IncrementValue(42).ShouldBe(43); } + + [Fact] + public async Task IncrementValueAsync() + { + (await _controller.IncrementValueAsync(42)).ShouldBe(43); + } } } \ No newline at end of file diff --git a/test/Volo.Abp.TestApp.Tests/Volo/Abp/TestApp/Application/PersonAppService_Tests.cs b/test/Volo.Abp.TestApp.Tests/Volo/Abp/TestApp/Application/PersonAppService_Tests.cs index 966821f83e..9dbfc8936e 100644 --- a/test/Volo.Abp.TestApp.Tests/Volo/Abp/TestApp/Application/PersonAppService_Tests.cs +++ b/test/Volo.Abp.TestApp.Tests/Volo/Abp/TestApp/Application/PersonAppService_Tests.cs @@ -18,7 +18,7 @@ namespace Volo.Abp.TestApp.Application [Fact] public async Task GetAll() { - var people = await _peopleAppService.GetList(new PagedAndSortedResultRequestDto()); + var people = await _peopleAppService.GetListAsync(new PagedAndSortedResultRequestDto()); people.Items.Count.ShouldBeGreaterThan(0); } }