Alıştırma - CRUD işlemleri uygulama
POSTStokumuza (), Update ( PUT ) ve Delete () pizza bir oluşturma özelliği eklemek IÇIN Web API denetleyicinizi genişletmeye devam edelim DELETE .
Pizza ekleme
Bir pizza, Web API 'ümüzle bir yöntemle eklenmesine imkan sağlar POST .
Controllers/PizzaController.cs içindeki
// POST actionaçıklamasını aşağıdaki kod ile değiştirin:[HttpPost] public IActionResult Create(Pizza pizza) { PizzaService.Add(pizza); return CreatedAtAction(nameof(Create), new { id = pizza.Id }, pizza); }Yukarıdaki eylem:
[HttpPost]özniteliğiyle belirtildiği gibi yalnızca HTTP POST fiiline yanıt verir.- İstek gövdesinin
Pizzanesnesini bellek içi önbelleğe ekler.
Not
Denetleyici
[ApiController]özniteliğiyle açıklandığından,Pizzaparametresinin istek gövdesinde bulunacağı örtülü olarak belirtilir.CreatedAtActionyöntem çağrısındaki ilk parametre bir eylem adını temsil eder. Eylem adının sabit kodlanmasını önlemek içinnameofanahtar sözcüğü kullanılır.CreatedAtAction``locationönceki birimde açıklandığı gibi yeni oluşturulan pizza 'nin URL 'sini içeren bir http yanıt üst bilgisi oluşturmak için eylem adını kullanır.
Bir pizza değiştirme
Bir pizza 'nin bir yöntemiyle Web API 'imiz aracılığıyla güncelleştirilmesini etkinleştirelim PUT .
Controllers/PizzaController.cs içindeki
// PUT actionaçıklamasını aşağıdaki kod ile değiştirin:[HttpPut("{id}")] public IActionResult Update(int id, Pizza pizza) { if (id != pizza.Id) return BadRequest(); var existingPizza = PizzaService.Get(id); if(existingPizza is null) return NotFound(); PizzaService.Update(pizza); return NoContent(); }Yukarıdaki eylem:
[HttpPut]özniteliğiyle belirtildiği gibi yalnızca HTTP PUT fiiline yanıt verir.id, Öğesinden sonra URL segmentine parametre değerinin dahil edilmesini gerektirirpizza/.ActionResultdönüş türü çalışma zamanına kadar bilinmediği içinIActionResultdöndürür.BadRequest,NotFoundVe yöntemleri sırasıyla,,NoContentBadRequestResultNotFoundResultve türlerini döndürürNoContentResult.
Not
Denetleyiciye
[ApiController]özniteliğiyle not eklendiğindenPizzaparametresinin istek gövdesinde bulunacağı örtülü olarak belirtilir.
Pizza kaldır
Bir pizza 'nin bir metotla Web API 'SI aracılığıyla kaldırılmasını etkinleştirelim DELETE .
Controllers/PizzaController.cs içindeki
// DELETE actionaçıklamasını aşağıdaki kod ile değiştirin:[HttpDelete("{id}")] public IActionResult Delete(int id) { var pizza = PizzaService.Get(id); if (pizza is null) return NotFound(); PizzaService.Delete(id); return NoContent(); }Yukarıdaki eylem:
[HttpDelete]özniteliğiyle belirtildiği gibi yalnızca HTTP DELETE fiiline yanıt verir.id, Öğesinden sonra URL segmentine parametre değerinin dahil edilmesini gerektirirpizza/.ActionResultdönüş türü çalışma zamanına kadar bilinmediği içinIActionResultdöndürür.NotFoundveNoContentyöntemleri sırasıylaNotFoundResultveNoContentResulttürlerini döndürür.- Belirtilen parametreyle eşleşen bir pizza için bellek içi önbelleği sorgular
id.
Tamamlanmış Web API 'sini derleyin ve çalıştırın
Aşağıdaki komutu çalıştırarak Web API 'sini derleyin ve başlatın:
dotnet runhttpreplana menüden terminal > yeni terminal ' i seçerek mevcut terminali yeniden açın veya yeni tümleşik terminalden Visual Studio Code açın.Yeni bir Terminal açtıysanız, aşağıdaki komutu çalıştırarak Web API 'imize bağlanın:
httprepl http://localhost:5000Alternatif olarak, HttpRepl çalışırken herhangi bir zamanda aşağıdaki komutu çalıştırın:
Örnek:
(Disconnected)> connect http://localhost:5000Aşağıdaki komutu çalıştırarak pizza uç noktasına gidin:
cd PizzaPizza API 'sindeki yeni eylemleri görmek için aşağıdaki komutu çalıştırın:
lsYukarıdaki komut, uç nokta için kullanılabilir API 'Leri çıktı olarak dolacak
Pizza:http://localhost:5000/Pizza> ls . [GET|POST] .. [] {id} [GET|PUT|DELETE]POSTAşağıdaki komutu kullanarak HttpRepl öğesinde yeni bir pizza ekleme isteği yapın:post -c "{"name":"Hawaii", "isGlutenFree":false}"Aşağıdaki komut,
POSTYeni pizza 'yi envanterimize eklemek için bir istek yapar ve ardından tüm Pizza 'nin bir listesini geri döndürür:HTTP/1.1 201 Created Content-Type: application/json; charset=utf-8 Date: Fri, 02 Apr 2021 23:23:09 GMT Location: http://localhost:5000/Pizza?id=3 Server: Kestrel Transfer-Encoding: chunked { "id": 3, "name": "Hawaii", "isGlutenFree": false }HawaiiAşağıdaki komutu kullanarak yeni pizza öğesiniHawaiianbir pizza ile güncelleştirelimPUT:put 3 -c "{"id": 3, "name":"Hawaiian", "isGlutenFree":false}"Bu, başarılı olduğunu izleyen çıktıyı döndürür:
HTTP/1.1 204 No Content Date: Fri, 02 Apr 2021 23:23:55 GMT Server: KestrelPizza 'nin güncelleştirildiğini doğrulamak için
GETeylemi aşağıdaki komutla yeniden çalıştırabilirsiniz:get 3Bu, yeni güncellenen pizza döndürür:
HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Date: Fri, 02 Apr 2021 23:27:37 GMT Server: Kestrel Transfer-Encoding: chunked { "id": 3, "name": "Hawaiian", "isGlutenFree": false }API 'imiz, aşağıdaki komutu çalıştırarak yeni oluşturulan pizza de
DELETEeyleme silebilir:delete 3Bu, başarılı olması
204 No Contentiçin bir döndürür:HTTP/1.1 204 No Content Date: Fri, 02 Apr 2021 23:30:04 GMT Server: KestrelPizza 'nin kaldırıldığını doğrulamak için,
GETaşağıdaki komutla eylemi yeniden çalıştırabilirsiniz:getBu, özgün pizzumuzu sonuçlar olarak döndürür:
HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Date: Fri, 02 Apr 2021 23:31:15 GMT Server: Kestrel Transfer-Encoding: chunked [ { "id": 1, "name": "Classic Italian", "isGlutenFree": false }, { "id": 2, "name": "Veggie", "isGlutenFree": true } ]
ASP.NET Core ile oluşturulmuş yeni oluşturulan Web API 'imizi uygulamayı ve test etmeyi tamamladık. Daha sonra bazı en iyi uygulamalar ve diğer öğrenme modülleri sunuyoruz.
Yardıma mı ihtiyacınız var? Sorun giderme kılavuzumuza gözatın veya sorun bildirerek belirli bir konuda geri bildiriminizi paylaşın.