Partial Update - czyli częściowa aktualizacja zasobów możliwa jest przy użyciu metody PATCH. Jak powinniśmy używać PATCH opisane jest na stronie JSON Patch | jsonpatch.com Polecam zwłaszcza zobaczyć na opis składni, która nie jest od razu oczywista. Sama operacja partial update jest prosta i bardzo elastyczna a większość logiki załatwia za nas odpowiednia biblioteka.
Aby w łatwy sposób skorzystać z PATCH w projekcie:
1. Instalujemy paczkę nuget Microsoft.AspNetCore.Mvc.NewtonsoftJson:
2. Zmieniamy bibliotekę formatującą JSONa z System.Text.Json na NewtonsoftJson:
var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers() .AddNewtonsoftJson(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
3. Tworzymy akcję w kontrolerze:
[HttpPatch("{id:int}")] [ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status404NotFound)] [ProducesResponseType(StatusCodes.Status204NoContent)] public IActionResult UpdatePartialBook(int id, JsonPatchDocument<BookDto> bookPatchObject) { if (bookPatchObject == null || id == 0) { return BadRequest(); } var book = //Code to get book from DB (or any other data source) if (book == null) { return NotFound(); } bookPatchObject.ApplyTo(book, ModelState); if (!ModelState.IsValid) { return BadRequest(ModelState); } return NoContent(); }
I właściwie tyle :)
Teraz możemy przetestować naszą metodę w akcji. Przykładowo zmienimy autora dla pierwszej książki:
Przed zmianą:
Wywołujemy partial update:
Po zmianie potwierdzamy, że aktualizacja się powiodła:
Brak komentarzy:
Prześlij komentarz