Alıştırma - CRUD işlemleri uygulama

Tamamlandı

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 .

  1. Controllers/PizzaController.cs içindeki // POST action açı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 Pizza nesnesini bellek içi önbelleğe ekler.

    Not

    Denetleyici [ApiController] özniteliğiyle açıklandığından, Pizza parametresinin istek gövdesinde bulunacağı örtülü olarak belirtilir.

    CreatedAtAction yöntem çağrısındaki ilk parametre bir eylem adını temsil eder. Eylem adının sabit kodlanmasını önlemek için nameof anahtar 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 .

  1. Controllers/PizzaController.cs içindeki // PUT action açı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 gerektirir pizza/ .
    • ActionResult dönüş türü çalışma zamanına kadar bilinmediği için IActionResult döndürür. BadRequest, NotFound Ve yöntemleri sırasıyla,, NoContent BadRequestResult NotFoundResult ve türlerini döndürür NoContentResult .

    Not

    Denetleyiciye [ApiController] özniteliğiyle not eklendiğinden Pizza parametresinin 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 .

  1. Controllers/PizzaController.cs içindeki // DELETE action açı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 gerektirir pizza/ .
    • ActionResult dönüş türü çalışma zamanına kadar bilinmediği için IActionResult döndürür. NotFound ve NoContent yöntemleri sırasıyla NotFoundResult ve NoContentResult tü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

  1. Aşağıdaki komutu çalıştırarak Web API 'sini derleyin ve başlatın:

    dotnet run
    
  2. httpreplana menüden terminal > yeni terminal ' i seçerek mevcut terminali yeniden açın veya yeni tümleşik terminalden Visual Studio Code açın.

  3. Yeni bir Terminal açtıysanız, aşağıdaki komutu çalıştırarak Web API 'imize bağlanın:

    httprepl http://localhost:5000
    

    Alternatif olarak, HttpRepl çalışırken herhangi bir zamanda aşağıdaki komutu çalıştırın:

    Örnek:

    (Disconnected)> connect http://localhost:5000
    

    Aşağıdaki komutu çalıştırarak pizza uç noktasına gidin:

    cd Pizza
    
  4. Pizza API 'sindeki yeni eylemleri görmek için aşağıdaki komutu çalıştırın:

    ls
    

    Yukarı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]
    
  5. 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, POST Yeni 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
    }
    
  6. HawaiiAşağıdaki komutu kullanarak yeni pizza öğesini Hawaiian bir pizza ile güncelleştirelim PUT :

    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: Kestrel
    

    Pizza 'nin güncelleştirildiğini doğrulamak için GET eylemi aşağıdaki komutla yeniden çalıştırabilirsiniz:

    get 3
    

    Bu, 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
    }
    
  7. API 'imiz, aşağıdaki komutu çalıştırarak yeni oluşturulan pizza de DELETE eyleme silebilir:

    delete 3
    

    Bu, başarılı olması 204 No Content için bir döndürür:

    HTTP/1.1 204 No Content
    Date: Fri, 02 Apr 2021 23:30:04 GMT
    Server: Kestrel
    

    Pizza 'nin kaldırıldığını doğrulamak için, GET aşağıdaki komutla eylemi yeniden çalıştırabilirsiniz:

    get
    

    Bu, ö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.