@@ -83,30 +83,22 @@ In some cases it may be necessary to only expose a few methods on the resource.
83
83
For this reason, we have created a hierarchy of service interfaces that can be used to get the
84
84
exact implementation you require. Below is a table outlining these interfaces:
85
85
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
+
96
88
97
89
In order to take advantage of these interfaces you first need to inject the service for each implemented interface.
98
90
Using Autofac, as an example, this is simply:
99
91
100
92
``` csharp
101
93
public class MyResourceService : ICreateService <MyResource >, IDeleteService <MyResource > {
102
- // ...
94
+ // ...
103
95
}
96
+ ```
104
97
98
+ ``` csharp
105
99
public class Startup {
106
100
public IServiceProvider ConfigureServices (IServiceCollection services ) {
107
- // ...
108
101
builder .RegisterType <MyResourceService >().AsImplementedInterfaces ();
109
- // ...
110
102
}
111
103
}
112
104
```
@@ -115,15 +107,13 @@ Then in the controller, you should inherit the base controller and pass the serv
115
107
the named, optional base parameters:
116
108
117
109
``` csharp
118
- public class MyResourcesController : BaseJsonApiController <MyResource , int > {
110
+ public class MyResourcesController : BaseJsonApiController <MyResource > {
111
+
119
112
public MyResourcesController (
120
113
IJsonApiContext jsonApiContext ,
121
114
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 ) { }
127
117
128
118
[HttpPost ]
129
119
public override async Task <IActionResult > PostAsync ([FromBody ] MyResource entity )
0 commit comments