Man. d. 26. Aug
forrige blogpost
[[2024-08-28| næste blogpost]
I dag vil jeg bruge lidt af tiden på at ligge et road map for min læring de
næste par uger. Jeg vil gerne have en bedre forståelse af, hvordan jeg bruger
min Læringsplan bedst muligt så jeg let kan finde ud af hvad næste skridt er
i min læring.
Jeg har opdateret 35_36 med henblik på dokumentet ligger mere op til at der
bliver gjort noget. Mere end at det bruges til at dokumentere hvad jeg har lært.
En vigtig pointe fra fra denne YouTube video
var at det var vigtigt at når man starter et projekt op fra bunden og man på
sigt vil sikre at en transition til microservices er mulig så skal man definere
tydelige interfaces i sin kode.
Disse interfaces skal være så generelle som muligt så de kan bruges af flere
services og så de ikke er afhængige af en specifik service.
I forhold til projektet er jeg begyndt at se lidt på hvordan kan gøre metoder
mere sikre end deres umiddelbare funtion.
Jeg har lavet denne metode:
public async Task<IActionResult> GetAllVideos()
}
var videos = await _service.GetAllVideos();
return Ok(videos);
}
Det som denne metodee gør er at hente alle video fra databasen gennem en
service.
Hvis man så skal forholde sig til følgende:
- input validation
- logging
- fejl og statuskoder
- Performance
- dokumentation
Så vil koden se sådan ud:
/// <summary>
/// Retrieves a list of all videos.
/// </summary>
/// <remarks>
/// Sample request:
///
/// GET /api/video
/// </remarks>
/// <response code="200">Returns a list of all videos.</response>
/// <response code="500">Internal server error if something goes wrong.</response>
/// <returns>A list of video objects.</returns>
[HttpGet]
[ProducesResponseType(typeof(IEnumerable<Video>), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> GetAllVideos()
{
try
{
_logger.LogInformation("Getting all videos");
var videos = await _service.GetAllVideos();
if (videos == null)
{
_logger.LogWarning("No videos found");
return NotFound("No videos found");
}
return Ok(videos);
}
catch (Exception e)
{
_logger.LogError($"An error occurred: {e.Message}");
return StatusCode(500, "Internal server error");
}
}