@@ -83,30 +83,22 @@ In some cases it may be necessary to only expose a few methods on the resource.
8383For this reason, we have created a hierarchy of service interfaces that can be used to get the
8484exact implementation you require. Below is a table outlining these interfaces:
8585
86- | METHOD | IResourceService | IResourceCmdService | IResourceQueryService | IGetAllService | IGetByIdService | IGetRelationshipService | IGetRelationships | ICreateService | IDeleteService | IUpdateService | IUpdateRelationshipService |
87- | ------------------------------------------| :----------------:| :-------------------:| :---------------------:| :--------------:| :---------------:| :-----------------------:| :-----------------:| :--------------:| :--------------:| :--------------:| :--------------------------:|
88- | GET / | ✓ | | ✓ | ✓ | | | | | | | |
89- | GET /{id} | ✓ | | ✓ | | ✓ | | | | | | |
90- | GET /{id}/{relationship} | ✓ | | ✓ | | | ✓ | | | | | |
91- | GET /{id}/relationships/{relationship} | ✓ | | ✓ | | | | ✓ | | | | |
92- | POST / | ✓ | ✓ | | | | | | ✓ | | | |
93- | DELETE /{id} | ✓ | ✓ | | | | | | | ✓ | | |
94- | PATCH /{id} | ✓ | ✓ | | | | | | | | ✓ | |
95- | PATCH /{id}/relationships/{relationship} | ✓ | ✓ | | | | | | | | | ✓ |
86+ ![ interfaces] ( service_table.png )
87+
9688
9789 In order to take advantage of these interfaces you first need to inject the service for each implemented interface.
9890 Using Autofac, as an example, this is simply:
9991
10092``` csharp
10193public class MyResourceService : ICreateService <MyResource >, IDeleteService <MyResource > {
102- // ...
94+ // ...
10395 }
96+ ```
10497
98+ ``` csharp
10599public class Startup {
106100 public IServiceProvider ConfigureServices (IServiceCollection services ) {
107- // ...
108101 builder .RegisterType <MyResourceService >().AsImplementedInterfaces ();
109- // ...
110102 }
111103}
112104```
@@ -115,15 +107,13 @@ Then in the controller, you should inherit the base controller and pass the serv
115107the named, optional base parameters:
116108
117109``` csharp
118- public class MyResourcesController : BaseJsonApiController <MyResource , int > {
110+ public class MyResourcesController : BaseJsonApiController <MyResource > {
111+
119112 public MyResourcesController (
120113 IJsonApiContext jsonApiContext ,
121114 ICreateService <MyResource > create ,
122- IDeleteService <MyResource > delete )
123- : base (
124- jsonApiContext ,
125- create : create , // <--- pass the services to the base controller using named optional parameters
126- delete : delete ) { }
115+ IDeleteService <MyResource > delete
116+ ) : base (jsonApiContext , create : create , delete : delete ) { }
127117
128118 [HttpPost ]
129119 public override async Task <IActionResult > PostAsync ([FromBody ] MyResource entity )
0 commit comments