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

Tamamlandı

Envanterimizden pizza oluşturma (), güncelleştirme (POSTPUT) ve silme (DELETE) özelliği eklemek için web API denetleyicimizi genişletmeye devam edelim.

Pizza ekleme

Şimdi bir yöntemi kullanarak POST web API'si aracılığıyla pizza eklenmesini etkinleştirelim.

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(Get), new { id = pizza.Id }, pizza);
}

Yukarıdaki eylem:

  • Özniteliği tarafından belirtildiği gibi yalnızca HTTP POST fiiline [HttpPost] 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 önceki ünitede açıklandığı gibi, yeni oluşturulan pizzanın URL'sine sahip bir HTTP yanıt üst bilgisi oluşturmak location için eylem adını kullanır.

Pizzayı değiştirme

Şimdi bir yöntemi kullanarak PUT web API'si aracılığıyla bir pizzanın güncelleştirilmesine olanak tanıyalım.

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.
  • parametresinin değerinin id sonrasında pizza/URL kesimine eklenmesini gerektirir.
  • dönüş IActionResulttürü çalışma zamanına ActionResult kadar bilinmediğinden döndürür. BadRequest, NotFoundve NoContent yöntemleri sırasıyla , NotFoundResultve NoContentResult türlerini döndürürBadRequestResult.

Not

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

Pizza kaldırma

Son olarak, bir yöntemi kullanarak DELETE web API'si aracılığıyla bir pizzanın kaldırılmasını etkinleştirelim.

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:

  • Özniteliği tarafından belirtildiği gibi yalnızca HTTP DELETE fiiline [HttpDelete] yanıt verir.
  • parametresinin değerinin id sonrasında pizza/URL kesimine eklenmesini gerektirir.
  • 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.
  • Sağlanan id parametreyle eşleşen bir pizza için bellek içi önbelleği sorgular.

Devam etmeden önce Controllers/PizzaController.cs dosyasını kaydetmeyi unutmayın,

Tamamlanmış web API'sini derleme ve çalıştırma

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

dotnet run

Tamamlanmış web API'sini HTTP dosyalarıyla test edin

  1. ContosoPizza.http dosyasını yeniden açın.

  2. POST Aşağıdaki komutu kullanarak içine yeni pizza ekleme isteğinde HttpRepl bulunın:

    POST {{ContosoPizza_HostAddress}}/pizza/
    Content-Type: application/json
    
    {
        "name": "Hawaii",
        "isGlutenFree": false
    }
    
    ###
    

    Yukarıdaki komut yeni oluşturulan pizzayı döndürür:

    HTTP/1.1 201 Created
    Connection: close
    Content-Type: application/json; charset=utf-8
    Date: Wed, 17 Jan 2024 17:03:02 GMT
    Server: Kestrel
    Location: http://localhost:5192/Pizza/3
    Transfer-Encoding: chunked
    
    {
        "id": 3,
        "name": "Hawaii",
        "isGlutenFree": false
    }
    
  3. Aşağıdaki komutu kullanarak bir istekle yeni Hawaii pizzayı Hawaiian pizzaya PUT güncelleştirin:

    PUT {{ContosoPizza_HostAddress}}/pizza/3
    Content-Type: application/json
    
    {
        "id": 3,
        "name": "Hawaiian",
        "isGlutenFree": false
    }
    
    ###
    

    Yukarıdaki komut, başarılı olduğunu gösteren aşağıdaki çıkışı döndürür:

    HTTP/1.1 204 No Content
    Connection: close
    Date: Wed, 17 Jan 2024 17:07:30 GMT
    Server: Kestrel
    

    Pizzanın güncelleştirildiğini doğrulamak için aşağıdaki komutu kullanarak eylemi yeniden çalıştırın GET :

    GET {{ContosoPizza_HostAddress}}/pizza/3
    Accept: application/json
    
    ###
    

    Yukarıdaki komut yeni güncelleştirilen pizzayı döndürür:

    HTTP/1.1 200 OK
    Connection: close
    Content-Type: application/json; charset=utf-8
    Date: Wed, 17 Jan 2024 17:09:01 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    
    {
        "id": 3,
        "name": "Hawaiian",
        "isGlutenFree": false
    }
    
  4. Aşağıdaki komutu çalıştırırsanız API'miz yeni oluşturulan pizzayı DELETE eylem aracılığıyla da silebilir:

    DELETE {{ContosoPizza_HostAddress}}/pizza/3
    
    ###
    

    Yukarıdaki komut başarı için bir 204 No Content sonuç döndürür:

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

    Pizzanın kaldırıldığını doğrulamak için aşağıdaki komutu kullanarak eylemi yeniden çalıştırın GET :

    GET {{ContosoPizza_HostAddress}}/pizza/
    Accept: application/json
    
    ###
    

    Yukarıdaki komut, özgün pizzaları sonuç 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
        }
    ]
    

artık ASP.NET Core ile oluşturulmuş yeni oluşturulan bir web API'sini uygulamayı ve test etme işlemini tamamladınız.

İsteğe bağlı: Komut Satırı HTTPREPL ile tamamlanmış web API'sini test edin

  1. Mevcut httprepl terminali yeniden açın veya ana menüden Terminal>Yeni Terminal'i seçerek Visual Studio Code'dan yeni bir tümleşik terminal açın.

  2. Yeni bir terminal açtıysanız aşağıdaki komutu çalıştırarak web API'sine bağlanın:

    httprepl https://localhost:{PORT}
    

    Alternatif olarak, çalışırken istediğiniz zaman HttpRepl aşağıdaki komutu çalıştırın:

    connect https://localhost:{PORT}
    
  3. Pizza Aşağıdaki komutu çalıştırarak uç noktaya gidin:

    cd Pizza
    
  4. Pizza API'sinde 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'lerin çıkışını Pizza gösterir:

        https://localhost:{PORT}/Pizza> ls
        .      [GET|POST]
        ..     []
        {id}   [GET|PUT|DELETE]
    
  5. POST Aşağıdaki komutu kullanarak içine yeni pizza ekleme isteğinde HttpRepl bulunın:

    post -c "{"name":"Hawaii", "isGlutenFree":false}"
    

    Yukarıdaki komut yeni oluşturulan pizzayı 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: https://localhost:{PORT}/Pizza?id=3
    Server: Kestrel
    Transfer-Encoding: chunked
    
    {
        "id": 3,
        "name": "Hawaii",
        "isGlutenFree": false
    }
    
  6. Aşağıdaki komutu kullanarak bir istekle yeni Hawaii pizzayı Hawaiian pizzaya PUT güncelleştirin:

    put 3 -c  "{"id": 3, "name":"Hawaiian", "isGlutenFree":false}"
    

    Yukarıdaki komut, başarılı olduğunu gösteren aşağıdaki çıkışı döndürür:

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

    Pizzanın güncelleştirildiğini doğrulamak için aşağıdaki komutu kullanarak eylemi yeniden çalıştırın GET :

    get 3
    

    Yukarıdaki komut yeni güncelleştirilen pizzayı 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. Aşağıdaki komutu çalıştırırsanız API'miz yeni oluşturulan pizzayı DELETE eylem aracılığıyla da silebilir:

    delete 3
    

    Yukarıdaki komut başarı için bir 204 No Content sonuç döndürür:

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

    Pizzanın kaldırıldığını doğrulamak için aşağıdaki komutu kullanarak eylemi yeniden çalıştırın GET :

    get
    

    Yukarıdaki komut, özgün pizzaları sonuç 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
        }
    ]
    

artık ASP.NET Core ile oluşturulmuş yeni oluşturulan bir web API'sini uygulamayı ve test etme işlemini tamamladınız.