Hej, piszę pierwszą w życiu Web API, i trochę kombinowałem jak przerobić przykład z książki na asynchroniczną. Bazy pod nią nie ma, działa na liście obiektów ładowanych do pamięci. Kod się kompiluje i funkcjonalności działają, ale ciekaw jestem czy coś byście może zmienili? Z async
nie mam wiele doświadczenia. Za klienta (dla consume) jeszcze się nie brałem, to pewnie też będzie ciekawa przygoda.
[Route("api/[controller]")]
public class ReservationController : Controller
{
private IRepository repository;
public ReservationController(IRepository repo) => repository = repo;
[HttpGet]
public async Task<IActionResult> Get()
{
var returnMe = await Task.Run(() => repository.Reservations);
return Ok(returnMe);
}
[HttpGet("{id}")]
public async Task<IActionResult> Get(int id)
{
var returnMe = await Task.Run(() => repository.GetReservation(id));
return Ok(returnMe);
}
[HttpPost]
public async Task<IActionResult> Post([FromBody] Reservation res)
{
var returnMe = await Task.Run(() => repository.AddReservation(new Reservation
{
ReservationId = 0,
ClientName = res.ClientName,
Location = res.Location
}));
return Ok(returnMe);
}
[HttpPut]
public async Task<IActionResult> Put([FromBody] Reservation res)
{
var returnMe = await Task.Run(() => repository.UpdateReservation(res));
return Ok(returnMe);
}
[HttpDelete("{id}")]
public async Task<IActionResult> Delete(int id)
{
var returnMe = await Task.Run(() => repository.DeleteReservation(id));
return Ok(returnMe);
}
}
GH projektu:
https://github.com/przemyslawbak/Trials/tree/master/API%20Controller%2002%20async/API%20Controller%2001%20ksiazka