From a5bdfca712234c7dbff6ffa9befac03ef2a93418 Mon Sep 17 00:00:00 2001 From: malik masis Date: Mon, 23 May 2022 13:33:49 +0300 Subject: [PATCH] Updated the doc Edited the error output and ui for permission --- .../POST.md | 69 +++++++++++------- .../permission.png | Bin 0 -> 52911 bytes 2 files changed, 41 insertions(+), 28 deletions(-) create mode 100644 docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/permission.png diff --git a/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md b/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md index 894c710dc7..b94b10780b 100644 --- a/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md +++ b/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/POST.md @@ -2,12 +2,21 @@ In this article, I will show how to consume your HTTP APIs from a .NET application using ABP's [dynamic](https://docs.abp.io/en/abp/latest/API/Dynamic-CSharp-API-Clients) and [static](https://docs.abp.io/en/abp/latest/API/Static-CSharp-API-Clients) client-side proxy systems. I will start by creating a new project and consume the HTTP APIs from a .NET console application using dynamic client proxies. Then I will switch to static client proxies. Finally, I will glance at the differences and similarities between static and dynamic generic proxies. +**Benefits (both valid for dynamic and static proxies):** + +* Maps C# method calls to remote server HTTP calls by considering the HTTP method, route, query string parameters, request payload and other details. +* Authenticates the HTTP Client by adding access token to the HTTP header. +* Serializes to and deserialize from JSON. +* Handles HTTP API versioning. +* Add correlation id, current tenant id and the current culture to the request. +* Properly handles the error messages sent by the server and throws proper exceptions. + ## Create a new ABP application with the ABP CLI Firstly create a new solution via [ABP CLI](https://docs.abp.io/en/abp/latest/CLI): -````shell +```shell abp new Acme.BookStore -```` +``` > See ABP's [Getting Started document](https://docs.abp.io/en/abp/latest/Getting-Started-Setup-Environment?UI=MVC&DB=EF&Tiered=No) to learn how to create and run your application, if you haven't done it before. @@ -64,9 +73,9 @@ namespace Acme.BookStore.Books { var bookDtos = new List() { - new BookDto(){ Name = "Anna Karenina", AuthorName ="Tolstoy", Price = 50}, + new BookDto(){ Name = "Hunger", AuthorName ="Knut Hamsun", Price = 50}, new BookDto(){ Name = "Crime and Punishment", AuthorName ="Dostoevsky", Price = 60}, - new BookDto(){ Name = "Mother", AuthorName ="Gorki", Price = 70} + new BookDto(){ Name = "For Whom the Bell Tolls", AuthorName ="Ernest Hemingway", Price = 70} }; return Task.FromResult(new PagedResultDto( bookDtos.Count, @@ -112,26 +121,13 @@ We are basically injecting the `IBookAppService` interface to consume the remote You can run the application to see the output: -```` +``` Books: Anna Karenina, Crime and Punishment, Mother -```` +``` ## Convert application to use static client proxies Before showing you how to use static client proxies instead of dynamic client proxies, I ask you to talk differences between both approaches. Their similarities, advantages and disadvantages to each other. -**Benefits (both valid for dynamic and static proxies):** - -* Maps C# method calls to remote server HTTP calls by considering the HTTP method, route, query string parameters, request payload and other details. -* Authenticates the HTTP Client by adding access token to the HTTP header. -* Serializes to and deserialize from JSON. -* Handles HTTP API versioning. -* Add correlation id, current tenant id and the current culture to the request. -* Properly handles the error messages sent by the server and throws proper exceptions. - -**Differences of dynamic and static proxies:** - -Static generic proxies provide **better performance** because it doesn't need to run on runtime, but you should **re-generate** once changing the API endpoint definition. Dynamic generic proxies don't need re-generate again because it works on the runtime but it has a slight performance penalty. - The [application startup template](https://docs.abp.io/en/abp/latest/Startup-Templates/Application) comes pre-configured for the **dynamic** client proxy generation, in the `HttpApi.Client` project. If you want to switch to the **static** client proxies, you should change `context.Services.AddHttpClientProxies` to `context.Services.AddStaticHttpClientProxies` in the module class of your `HttpApi.Client` project: ```csharp @@ -207,26 +203,43 @@ public class BookStorePermissionDefinitionProvider : PermissionDefinitionProvide ``` We can now add `[Authorize(BookStorePermissions.Books.Default)]` attribute to the `BookAppService` class: -````csharp +```csharp [Authorize(BookStorePermissions.Books.Default)] public class BookAppService : ApplicationService, IBookAppService { ... } -```` +``` If you now run the server, then run the console client application, you will see the following error on the console application: -```` -Authorization failed. These requirements were not met: -PermissionRequirement: BookStore.Books -AuthenticationScheme: Identity.Application was forbidden. -Request finished HTTP/1.1 GET https://localhost:44397/api/app/book?SkipCount=0&MaxResultCount=10&api-version=1.0 - - - 403 0 - 156.9766ms -```` +``` +Unhandled exception. Volo.Abp.Http.Client.AbpRemoteCallException: Forbidden + at Volo.Abp.Http.Client.ClientProxying.ClientProxyBase`1.ThrowExceptionForResponseAsync(HttpResponseMessage response) + at Volo.Abp.Http.Client.ClientProxying.ClientProxyBase`1.RequestAsync(ClientProxyRequestContext requestContext) + at Volo.Abp.Http.Client.ClientProxying.ClientProxyBase`1.RequestAsync[T](ClientProxyRequestContext requestContext) + at Volo.Abp.Http.Client.ClientProxying.ClientProxyBase`1.RequestAsync[T](String methodName, ClientProxyRequestTypeValue arguments) + at Acme.BookStore.Books.ClientProxies.BookClientProxy.GetListAsync(PagedAndSortedResultRequestDto input) in YourPath\ABPConsumingRestApiByUsingStaticProxy\src\Acme.BookStore.HttpApi.Client\ClientProxies\BookClientProxy.Generated.cs:line 20 + at Acme.BookStore.HttpApi.Client.ConsoleTestApp.ClientDemoService.RunAsync() in YourPath\ABPConsumingRestApiByUsingStaticProxy\test\Acme.BookStore.HttpApi.Client.ConsoleTestApp\ClientDemoService.cs:line 21 + at Acme.BookStore.HttpApi.Client.ConsoleTestApp.ConsoleTestAppHostedService.StartAsync(CancellationToken cancellationToken) in YourPath\ABPConsumingRestApiByUsingStaticProxy\test\Acme.BookStore.HttpApi.Client.ConsoleTestApp\ConsoleTestAppHostedService.cs:line 30 + at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken) + at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token) + at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token) + at Acme.BookStore.HttpApi.Client.ConsoleTestApp.Program.Main(String[] args) in YourPath\ABPConsumingRestApiByUsingStaticProxy\test\Acme.BookStore.HttpApi.Client.ConsoleTestApp\Program.cs:line 12 + at Acme.BookStore.HttpApi.Client.ConsoleTestApp.Program.
(String[] args) +``` To fix the problem, we should grant permission for the admin user. We are granting permission to the admin user because the console application is configured to use Resource Owner Password Grant Flow. That means the client application is consuming services on behalf of the admin user. You can see the configuration in the `appsettings.json` file of the console application. -**TODO: Show how to give permission, with screenshots** +**Giving permission** +Once you define the permissions, you can see them on the permission management modal. + +Go to the Administration -> Identity -> Roles page, select Permissions action for the admin role to open the permission management modal: +![persmisson](./permission.png) +Grant the permissions you want and save the modal. + +**Differences of dynamic and static proxies:** +Static generic proxies provide **better performance** because it doesn't need to run on runtime, but you should **re-generate** once changing the API endpoint definition. Dynamic generic proxies don't need re-generate again because it works on the runtime but it has a slight performance penalty. ### Further Reading In this tutorial, I explained how you can create an example project and apply static client proxy instead of dynamic client proxy. Also summarized the differences between both approaches. If you want to get more information, you can read the following documents: diff --git a/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/permission.png b/docs/en/Community-Articles/2022-05-16-Consuming-Rest-Api-By-Using-Static-Proxy/permission.png new file mode 100644 index 0000000000000000000000000000000000000000..60e6667993f3e4883ba585e920b5d2feba38fa4e GIT binary patch literal 52911 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 TuFna-b=5TQ>)b=CS%v%$rZkIt literal 0 HcmV?d00001