User1609246636 posted
Good evening,
I'm not really up to date with ASP.NET Core 3.x and I would like to get an advice.
I'm trying to standarize resource API output to look like this:
{
"statusCode": 200,
"statusMessage": "success",
"meta":
{
"count": 1,
"total": 1,
"pagination":
{
"page": 1,
"pages": 1,
"limit": 20
},
"filters": [],
"sorters": []
},
"data":
{
[
{
"id": 3,
"title": "Test",
"content": "Content Test",
"userId": 1,
"user": null,
"categoryId": null,
"category": null,
"comments": null,
"tags": null,
"createdOn": null,
"updatedOn": null
}
]
}
}
As opposed to:
[
{
"id": 3,
"title": "Test",
"content": "Content Test",
"userId": 1,
"user": null,
"categoryId": null,
"category": null,
"comments": null,
"tags": null,
"createdOn": null,
"updatedOn": null
}
]
The approach I've currently applied and works (but I don't find that good) is:
- I have 2 classes: Resource and ResourceCollection
- I use generic T classes in it, where T is basically model I'm trying to return (like Article, Post etc.)
- Return them in controllers as opposed to returning Post or List<Post>
The result? It works - but I don't think it should be done that way, here's the code for ResourceCollection as Resource is pretty similar:
namespace NppService.Resources
{
public class ResourceCollection<T> where T : class
{
public List<T> Data { get; set; }
public int Count => Data.Count;
public int Total { get; set; }
public ResourceCollection(List<T> data, DbContext context = null)
{
Data = data;
if (context == null)
return;
Total = context.Set<T>().Count();
}
}
}
Thank you in advance for any advices.