Alıştırma - Web API'si projesi oluşturma

Tamamlandı

Bu modülde .NET 8.0 SDK kullanılır. Tercih ettiğiniz komut terminalinde aşağıdaki komutu çalıştırarak .NET 8.0'ın yüklü olduğundan emin olun:

dotnet --list-sdks

Aşağıdaki örneğe benzer bir çıkış görüntülenir:

6.0.317 [C:\Program Files\dotnet\sdk]
7.0.401 [C:\Program Files\dotnet\sdk]
8.0.100 [C:\Program Files\dotnet\sdk]

ile 8 başlayan bir sürümün listelendiğinden emin olun. Hiçbiri listelenmiyorsa veya komut bulunamazsa en son .NET 8.0 SDK'sını yükleyin.

Web API'si projesi oluşturma ve keşfetme

Web API'siyle çalışacak bir .NET projesi ayarlamak için Visual Studio Code kullanırız. Visual Studio Code, yeni proje oluşturmayı kolaylaştıran tümleşik bir terminal içerir. Kod düzenleyicisi kullanmak istemiyorsanız, bu modüldeki komutları bir terminalde çalıştırabilirsiniz.

  1. Visual Studio Code'da Dosya>Klasör Aç'ı seçin.

  2. Seçtiğiniz konumda ContosoPizza adlı yeni bir klasör oluşturun ve ardından Klasör Seç'i seçin.

  3. Ana menüdenTerminali> seçerek Visual Studio Code'dan tümleşik terminali açın.

  4. Aşağıdaki komutu kopyalayıp terminal penceresine yapıştırın:

    dotnet new webapi -controllers -f net8.0
    

    Bu komut, denetleyicileri kullanan temel bir web API'si projesinin dosyalarını ve hava durumu tahminlerinin listesini döndüren ContosoPizza.csproj adlı bir C# proje dosyasını oluşturur. Hata alırsanız .NET 8 SDK'sının yüklü olduğundan emin olun.

    Önemli

    Web API projelerinin güvenliği varsayılan olarak ile https sağlanır. Sorun yaşıyorsanız ASP.NET Core HTTPS geliştirme sertifikasını yapılandırın.

    Visual Studio Code'dan projede hata ayıklamak için varlık ekleme istemi alabilirsiniz. İletişim kutusunda Evet'i seçin.

    Komut, C#tabanlı bir web API'si projesinin iskelesini oluşturmak için diğer webapi adıyla ASP.NET Core proje şablonunu kullanır. Bir ContosoPizza dizin oluşturulur. Bu dizin ,NET üzerinde çalışan bir ASP.NET Core projesi içerir. Proje adı ContosoPizza dizin adıyla eşleşir.

    Artık şu dosyalara ve dizinlere erişiminiz olmalıdır:

    -| Controllers
    -| obj
    -| Properties
    -| appsettings.Development.json
    -| appsettings.json
    -| ContosoPizza.csproj
    -| ContosoPizza.http
    -| Program.cs
    -| WeatherForecast.cs
    
  5. Şu dosya ve dizinleri inceleyin:

    Veri Akışı Adı Açıklama
    Controllers/ Genel yöntemleri HTTP uç noktaları olarak ortaya konan sınıflar içerir.
    Program.cs Hizmetleri ve uygulamanın HTTP isteği işlem hattını yapılandırarak uygulamanın yönetilen giriş noktasını içerir.
    ContosoPizza.csproj Projenin yapılandırma meta verilerini içerir.
    ContosoPizza.http REST API'lerini doğrudan Visual Studio Code'dan test etmek için yapılandırmayı içerir.

Web API'sini derleme ve test etme

  1. Komut kabuğunda aşağıdaki .NET Core CLI komutunu çalıştırın:

    dotnet run
    

    Yukarıdaki komut:

    • Geçerli dizindeki proje dosyasını bulur.
    • Bu proje için gerekli tüm proje bağımlılıklarını alır ve yükler.
    • Proje kodunu derler.
    • Web API'sini hem HTTP hem de HTTPS uç noktasında ASP.NET Core Kestrel web sunucusuyla barındırıyor.

    HTTP için 5000 ile 5300 arasında bir bağlantı noktası ve proje oluşturulduğunda HTTPS için 7000 ile 7300 arasında bir bağlantı noktası seçilir. Projenin launchSettings.json dosyasını düzenleyerek geliştirme sırasında kullandığınız bağlantı noktalarını kolayca değiştirebilirsiniz. Bu modül ile başlayan localhostgüvenli https URL'yi kullanır.

    Uygulamanızın çalıştığını gösteren aşağıdakine benzer bir çıkış almanız gerekir:

    Building...
    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: https://localhost:7294
    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: http://localhost:5118 
    info: Microsoft.Hosting.Lifetime[0]
          Application started. Press Ctrl+C to shut down.
    info: Microsoft.Hosting.Lifetime[0]
          Hosting environment: Development        
    

    Bu uygulamayı kendi makinenizde çalıştırıyorsanız, sonuçta elde edilen sayfayı görüntülemek için bir tarayıcıyı çıkışta görüntülenen HTTPS bağlantısına (önceki örnekte, https://localhost:7294) yönlendirebilirsiniz. Modülün kullanıldığı yerde {PORT} kullandığınız için bu bağlantı noktasını unutmayın.

    Önemli

    Beklenmeyen bir davranışla karşılaşırsanız terminal çıkışını denetleyin. Derleme başarısız olursa veya başka hatalar oluşursa, günlük dosyasının bilgileri sorun gidermenize yardımcı olur. Kodda değişiklik yaparken, klavyede CTRL+C tuşlarını seçip komutu yeniden çalıştırarak web API'sini dotnet run durdurmanız gerekir.

  2. Bir web tarayıcısı açın ve şuraya gidin:

    https://localhost:{PORT}/weatherforecast
    

    Aşağıdaki örneğe benzer bir JSON çıktısı görmeniz gerekir:

    [
        {
        "date": "2021-11-09T20:36:01.4678814+00:00",
        "temperatureC": 33,
        "temperatureF": 91,
        "summary": "Scorching"
        },
        {
        "date": "2021-11-09T20:36:01.4682337+00:00",
        "temperatureC": -8,
        "temperatureF": 18,
        "summary": "Cool"
        },
        // ...
    ]
    

İsteğe bağlı: Dosyalarla .http keşfetme

Projeye, API uç noktalarını standart bir biçimde test etmek için kullanılan ContosoPizza.http dosyası dahildir. .http dosyaları Visual Studio dahil olmak üzere çeşitli Tümleşik geliştirme ortamlarında (IDE' ler) ve REST İstemci uzantısının yüklü olduğu Visual Studio Code içinde desteklenir.

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

    Bazı IDE'lerde, bu dosya @ContosoPizza_HostAddress değişkenleri ve uygulama/json kabul eden /weatherforecast/ çağrısı yapan bir GET komutuyla önceden yapılandırılmıştır.

  2. Dosyanızda varsa, çalışan hizmete istek gönderen GET öğesinin üstündeki Gönderilen İstek komutunu seçin.

    Bu komutun çağrılması, tarayıcıda gördüğümüze benzer bir çıkışa sahip bir yanıt penceresi açar:

    HTTP/1.1 200 OK
    Connection: close
    Content-Type: application/json; charset=utf-8
    Date: Wed, 17 Jan 2024 16:46:40 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    
    [
        {
            "date": "2024-01-18",
            "temperatureC": -2,
            "temperatureF": 29,
            "summary": "Warm"
        },
        {
            "date": "2024-01-19",
            "temperatureC": 24,
            "temperatureF": 75,
            "summary": "Chilly"
        },
        // ..
    ]
    

İsteğe bağlı: KOMUT Satırı HTTP REPL ile API'leri keşfetme

  1. Ana menüden Terminal>Yeni Terminal'i seçerek Visual Studio Code'dan yeni bir tümleşik terminal açın ve aşağıdaki komutu çalıştırın:

    dotnet tool install -g Microsoft.dotnet-httprepl
    

    Yukarıdaki komut, web API'sine HTTP isteklerinde bulunmak için kullandığınız .NET HTTP Read-Eval-Print Loop (REPL) komut satırı aracını yükler.

  2. 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}
    

    İpucu

    HttpRepl Araç OpenAPI açıklaması bulunamıyor uyarısını verirse, bunun en olası nedeni güvenilmeyen bir geliştirme sertifikasıdır. HttpRepl güvenilir bir bağlantı gerektirir. Devam etmeden önce, sisteminizi geliştirme sertifikasına güvenecek şekilde yapılandırmanızgerekirdotnet dev-certs https --trust

  3. Aşağıdaki komutu çalıştırarak kullanılabilir uç noktaları keşfedin:

    ls
    

    Yukarıdaki komut, bağlı uç noktada bulunan tüm API'leri algılar ve bunları aşağıdaki çıkışta olduğu gibi listeler:

    https://localhost:{PORT}/> ls
    .                 []
    WeatherForecast   [GET] 
    
  4. WeatherForecast Aşağıdaki komutu çalıştırarak uç noktaya gidin:

    cd WeatherForecast
    

    Yukarıdaki komut, uç nokta için kullanılabilir API'lerin çıkışını WeatherForecast gösterir:

    https://localhost:{PORT}/> cd WeatherForecast
    /WeatherForecast    [GET]
    
  5. aşağıdaki komutu kullanarak içinde GET bir HttpRepl istekte bulunın:

    get
    

    Yukarıdaki komut, tarayıcıda uç noktaya gitmek gibi bir GET istekte bulunur:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Date: Fri, 02 Apr 2021 17:31:43 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    [
        {
        "date": 4/3/2021 10:31:44 AM,
        "temperatureC": 13,
        "temperatureF": 55,
        "summary": "Sweltering"
        },
        {
        "date": 4/4/2021 10:31:44 AM,
        "temperatureC": -13,
        "temperatureF": 9,
        "summary": "Warm"
        },
        // ..
    ]
    
  6. Aşağıdaki komutu kullanarak geçerli HttpRepl oturumu sonlandırın:

    exit
    
  7. dotnet Visual Studio Code'daki açılan listede terminale dönün. Klavyenizde CTRL+C tuşlarını seçerek web API'sini kapatın.

Web API'sini oluşturduğunuza göre pizza web API'sinin gereksinimlerini karşılayacak şekilde değiştirebiliriz.