I am retrieving a list of objects from ASP.NET Core backend to my .NET MAUI frontend with the Refit API.
Here is my controller:
[Route("api/Database/[controller]")][ApiController]public class StatementsController : ControllerBase{ // ... [HttpGet("GetStatementFromUserGuid")] public async Task<IActionResult> GetStatementFromUserGuid([FromQuery] Guid guid, [FromQuery] StatementViewOrder statementViewOrder, [FromQuery] int ReturnLoad = 5) { var user = await _controllerAssist.GuidAssist(guid).GetUserFromQueriesAsync(u => u.Statements); if (user == null) { return NotFound(); } if (user.Statements.Count == 0) { return NoContent(); } List<StatementQuickView> views = user.Statements.GetStatementQuickViewFromRawStatements(statementViewOrder, ReturnLoad); if (views.Count == 0 || views == null || views.Capacity == 0) { return StatusCode(500, "Error retrieving data"); } Console.WriteLine("\n\n\n" + views.Count.ToString()); Console.WriteLine(views.ToString()); return Ok(views); }}
I checked multiple times for a null list or empty list which would return a different http status code.
This is the interface in the frontend with Refit:
[Get("/api/Database/Statements/GetStatementFromUserGuid")]Task<ApiResponse<List<StatementQuickView>>> GetStatementFromUserGuid([Query] Guid guid, [Query] StatementViewOrder statementViewOrder, [Query] int ReturnLoad = 5);
This is my API service:
public async Task<List<StatementQuickView>?> SeeStatementsFromUserAsync(Guid guid, StatementViewOrder statementViewOrder, int ReturnLoad = 5){ var Data = await statementApi.GetStatementFromUserGuid(guid, statementViewOrder, ReturnLoad); if (Data.IsSuccessStatusCode) { ConfirmationHandler.CreateConfirmation("true"); } if (Data.Content == null) { ErrorHandler.CreateErrorPopUp("NULL"); return null; } switch (Data.StatusCode) { case System.Net.HttpStatusCode.OK: ConfirmationHandler.CreateConfirmation(Data.Content.Count.ToString()); return Data.Content; case System.Net.HttpStatusCode.InternalServerError: ErrorHandler.CreateErrorPopUp("Server Error"); return null; default: ErrorHandler.CreateErrorPopUp(Data.StatusCode.ToString()); return null; }}
Currently, the status code is 200 and Data.Content
is NULL
.
Using Swagger on the backend, I never got a null result.
This is the size of the payload that would be transferred :
{"$id": "1","$values": [ {"$id": "2","statementID": "57d8f6c9-6f05-4aa3-a169-5585b8940ea1","authorID": "7af20928-c6de-4f1f-af78-a452ef5fac11","author": "foo","profilePicture": null,"createdAt": "2024-10-06T21:51:57.425993","upvotes": 0,"downvotes": 0,"commentAmount": 0,"body": "blah blah blah","statementType": "General","labels": {"$id": "3","$values": ["string" ] } }, {"$id": "4","statementID": "aaf65ffa-f89d-4560-97ec-6cd3bd7e37ed","authorID": "7af20928-c6de-4f1f-af78-a452ef5fac11","author": "foo","profilePicture": null,"createdAt": "2024-10-06T01:59:01.1006187","upvotes": 0,"downvotes": 0,"commentAmount": 0,"body": "please?","statementType": "General","labels": null } ]}
The payload currently can go up to 5 "statements", so if you think that would cause an issue please tell me.
Thanks.