Przejdź do treści stopki
Iron Academy Logo
Aplikacja C#
Aplikacja C#

Inne Kategorie

Tworzenie aplikacji webowej C# za pomocą ASP.NET Core

Tim Corey
52m 05s

Tworzenie aplikacji internetowych jest podstawową umiejętnością współczesnych programistów, a zrozumieniuiuiuiuie podstawowych struktur projektów ma zasadnicze znaczenie. Ten artykuł, zainspirowany filmem Tima Coreya pt. "Intro to Web API", zagłębia się w złożoność tworzenia aplikacji internetowych przy użyciu frameworka .NET Core.

Korzystając z wiedzy Tima, dowiemy się, jak zainstalować, skonfigurować i zoptymalizować aplikację internetową, wykorzystując pełen potencjał frameworka .NET Core do tworzenia wydajnych i łatwych w utrzymaniu stron internetowych oraz interfejsów API. Niezależnie od tego, czy dopiero zaczynasz przygodę z tworzeniem stron internetowych, czy chcesz doskonalić swoje umiejętności, ten przewodnik pomoże Ci poruszać się po złożonych zadaniach związanych z tworzeniem stron internetowych, dostarczając wiedzy niezbędnej do tworzenia skutecznych i wydajnych aplikacji internetowych.

Wprowadzenie

Tim Corey rozpoczyna swój samouczek od wprowadzenia do tematu tworzenia interfejsów API za pomocą ASP .NET Core. Podkreśla on znaczenie zrozumieniuiuiuiuia podstaw API dla tworzenia solidnych i skalowalnych aplikacji internetowych.

Tim wprowadza temat, wyjaśniając kluczową rolę, jaką API odgrywają we współczesnym tworzeniu oprogramowania, ułatwiając komunikację między różnymi frameworkami do tworzenia stron internetowych, takimi jak serwer internetowy Blazor i Blazor Web Assembly. Nawet strony Razor opierają się na platformie .NET Core, co umożliwia płynną integrację różnych funkcji w wielu projektach w celu tworzenia aplikacji internetowych.

Tworzenie projektu ASP.NET Core Web API

Na początek Tim Corey pokazuje, jak skonfigurować nowy projekt ASP.NET Core Web API. Oto kroki przedstawione w jego filmie:

  1. Otwórz Visual Studio: Zacznij od uruchomienia instalatora Visual Studio i wybrania opcji utworzenia nowego projektu.

    Otwieranie Visual Studio

  2. Wybierz szablon API: Z szablonów projektów wybierz "ASP.NET Core Web API" i kliknij Dalej.

    Wybieranie szablonu API

  3. Skonfiguruj ustawienia projektu: Wprowadź nazwę projektu, wybierz lokalizację i nazwę rozwiązania.

    Konfigurowanie ustawień projektu

  4. Informacje dodatkowe: Wybierz platformę .NET Framework, wybierz typ uwierzytelniania, a on zaleca, aby nie zmieniać innych ustawień.

    Dodatkowe informacje

  5. Utwórz projekt: Kliknij "Utwórz", aby wygenerować projekt z domyślnymi konfiguracjami i niezbędnym kodem.

Ta konfiguracja stanowi podstawę do zgłębiania tworzenia interfejsów API, a Visual Studio generuje podstawową strukturę zawierającą niezbędne elementy, takie jak plik Program.cs, folder kontrolerów oraz plik appsettings.json.

Przegląd domyślnej aplikacji API

W 5:57 filmu Tima Coreya przedstawia on przegląd domyślnej aplikacji API wygenerowanej przez ASP.NET Core.

Uruchamianie aplikacji domyślnej

Tim zaczyna od uruchomienia domyślnej aplikacji, aby pokazać, co programiści otrzymują od razu po uruchomieniu. Po uruchomieniu projekt tworzy API, pobiera niezbędne pakiety NuGet i otwiera stronę internetową. Ta wstępna konfiguracja pokazuje podstawową strukturę i funkcjonalność API bez żadnych modyfikacji.

Uruchamianie domyślnej aplikacji

Interakcja z API

Uruchamiana strona internetowa jest oparta na Swaggerze, znanym obecnie jako OpenAPI. Swagger zapewnia przyjazny dla użytkownika interfejs do interakcji z API. Pozwala to zarówno programistom, jak i osobom niebędącym programistami na łatwe zrozumieniuiuiuiuie i przetestowanie punktów końcowych API. Interfejs ten jest szczególnie przydatny do wizualizacji działania API oraz do celów dokumentacyjnych.

Odkrywanie Swagger

Swagger prezentuje dostępne punkty końcowe w API. W domyślnej konfiguracji jednym z wstępnie skonfigurowanych punktów końcowych jest punkt końcowy "prognoza pogody". Klikając ten punkt końcowy i korzystając z funkcji "Wypróbuj", użytkownicy mogą wykonać wywołanie API i zobaczyć odpowiedź. Ta odpowiedź zawiera prognozę pogody w formacie JSON, pokazującą, w jaki sposób dane są zwracane przez API.

Tim o godz. 8:32 podkreśla, że chociaż surowe dane JSON mogą być trudne do odczytania bezpośrednio w przeglądarce, nakładka dokumentacji Swagger sprawia, że są one znacznie bardziej przystępne. Dokumentacja zawiera szczegółowe informacje na temat punktu końcowego, w tym metodę żądania (GET, POST itp.), strukturę zwracanych danych oraz wszelkie wymagańe parametry.

Dokumentacja JSON i wersjonowanie API

Swagger generuje również plik JSON, jak wskazuje Tim o 9:10, który dokumentuje API w formacie nadającym się do odczytu maszynowego. Dokumentacja ta ma kluczowe znaczenie dla innych aplikacji, które muszą współpracować z API, ponieważ opisuje dostępne punkty końcowe, schematy danych i oczekiwane odpowiedzi.

Tim o godz. 9:29 zwraca uwagę na znaczenie wersjonowania w interfejsach API. Domyślna konfiguracja zawiera wskaźnik wersji, co sugeruje możliwość istnienia wielu wersji API. Wersjonowanie ma kluczowe znaczenie dla zachowania kompatybilności wstecznej. Gdy zmiany w API mogą spowodować awarię istniejących klientów, posiadanie wielu wersji pozwala programistom na wprowadzanie nowych funkcji lub zmian bez zakłócania pracy obecnych użytkowników.

Czym jest API

W 11:22 Tim Corey wyjaśnia fundamentalną rolę interfejsów API (Application Programming Interfaces) we współczesnym tworzeniu stron internetowych. Podkreśla ich znaczenie w zarządzaniu i zabezpieczaniu wymiany danych między różnymi komponentami oprogramowania.

Cel interfejsów API

Tim podkreśla, że większość aplikacji skupia się na danych — ich pobieraniu, przetwarzaniu i wyświetlaniu. Interfejsy API pełnią rolę pośredników między interfejsem użytkownika a danymi bazowymi, zapewniając bezpieczny i wydajny sposób dostępu do danych. Ta centralizacja ma kluczowe znaczenie z kilku powodów:

  1. Bezpieczeństwo: Interfejsy API zapewniają bezpieczny sposób zarządzania dostępem do danych. Aplikacje mobilne i po stronie klienta nie powinny łączyć się bezpośrednio z bazami danych, aby uniknąć umieszczania danych uwierzytelniających do bazy danych w kodzie klienta, co stwarza poważne zagrożenie dla bezpieczeństwa.

  2. Abstrakcja: Interfejsy API oddzielają warstwę danych od interfejsu użytkownika, umożliwiając różnym aplikacjom klienckim (aplikacjom mobilnym, internetowym, desktopowym) interakcję z tym samym źródłem danych bez ujawniania bazy danych lub jej danych uwierzytelniających.

Wszechstronność w różnych frameworkach

Tim zauważa, że interfejsy API nie są ograniczone do konkretnych frameworków lub języków. Na przykład dostęp do interfejsu API języka C# mogą uzyskać frameworki JavaScript, takie jak Angular, React lub Vue, co pokazuje możliwości międzyplatformowe interfejsów API.

Przegląd kodu aplikacji internetowej API

O godz. 15:21 Tim Corey rozpoczyna szczegółowy przegląd struktury i funkcjonalności projektu API .NET Core. Poniżej przedstawiono kluczowe punkty jego wyjaśnień, które należy zrozumieć podczas pracy z serwerem HTTP i technologiami po stronie serwera podczas tworzenia aplikacji internetowych API:

1. Omówienie pliku Program.cs

Tim przegląda plik Program.cs, zauważając, że służy on do tworzenia aplikacji internetowej i konfiguracji usług, takich jak wstrzykiwanie zależności dla kontrolerów oraz Swagger (OpenAPI). Kod konfiguruje niezbędne usługi przed kompilacją i uruchomieniem aplikacji.

using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

2. Konfiguracja środowiska

Tim wyjaśnia, jak są konfigurowane ustawienia środowiska w launchSettings.json. Domyślne środowisko jest ustawione na "Development" do lokalnego testowania, z włączoną obsługą Swagger. W środowisku produkcyjnym Swagger jest zazwyczaj wyłączony ze względów bezpieczeństwa, ale można go włączyć, usuwając znacznik "development".

{
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "WebApplication": {
      "commandName": "Project",
      "launchBrowser": true,
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

3. Przekierowanie HTTPS i kontrolery

Tim zwraca uwagę na przekierowanie HTTPS i mapowanie kontrolerów. Ta konfiguracja zapewnia prawidłowe skonfigurowanie tras API. Autor preferuje stosowanie przedrostka "api" dla przejrzystości w trasach żądań i odpowiedzi HTTP, co można zmodyfikować, aby zapewnić rozróżnienie ścieżek API.

4. Kontroler prognozy pogody

Tim zagłębia się w WeatherForecastController.cs, podkreślając konfigurację trasy. Domyślna trasa to /weatherforecast, którą można zmodyfikować, aby uwzględniała przedrostek 'api'. Kontroler wykorzystuje metodę HTTP GET do pobierania danych, do których dostęp można uzyskać poprzez określoną trasę.

using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
    private static readonly string[] Summaries = new[]
    {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

    private readonly ILogger<WeatherForecastController> _logger;

    public WeatherForecastController(ILogger<WeatherForecastController> logger)
    {
        _logger = logger;
    }

    [HttpGet]
    public IEnumerable<WeatherForecast> Get()
    {
        return Enumerable.Range(1, 5).Select(index => new WeatherForecast
        {
            Date = DateTime.Now.AddDays(index),
            TemperatureC = Random.Shared.Next(-20, 55),
            Summary = Summaries[Random.Shared.Next(Summaries.Length)]
        })
        .ToArray();
    }
}

public class WeatherForecast
{
    public DateTime Date { get; set; }

    public int TemperatureC { get; set; }

    public string? Summary { get; set; }
}
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
    private static readonly string[] Summaries = new[]
    {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

    private readonly ILogger<WeatherForecastController> _logger;

    public WeatherForecastController(ILogger<WeatherForecastController> logger)
    {
        _logger = logger;
    }

    [HttpGet]
    public IEnumerable<WeatherForecast> Get()
    {
        return Enumerable.Range(1, 5).Select(index => new WeatherForecast
        {
            Date = DateTime.Now.AddDays(index),
            TemperatureC = Random.Shared.Next(-20, 55),
            Summary = Summaries[Random.Shared.Next(Summaries.Length)]
        })
        .ToArray();
    }
}

public class WeatherForecast
{
    public DateTime Date { get; set; }

    public int TemperatureC { get; set; }

    public string? Summary { get; set; }
}

5. Czasowniki HTTP i routing

Tim wyjaśnia, w jaki sposób czasowniki HTTP (GET, POST, PUT, DELETE) definiują punkty końcowe API. W przypadku żądania GET przeglądarka wywołuje określoną metodę w kontrolerze. Inne czynności wymagają narzędzi takich jak Postman do testowania.

Tworzenie kontrolera API

Tim demonstruje proces tworzenia kontrolera API:

  1. Dodawanie kontrolera: Kliknij prawym przyciskiem myszy folder "Controllers" i wybierz "Add > Controller".

  2. Wybór kontrolera API: Wybierz "API Controller - Empty" i podaj nazwę kontrolera.

    Dodawanie kontrolera

  3. Definiowanie akcji: Zaimplementuj akcje w kontrolerze, aby obsługiwać różne żądania HTTP. Tim podaje przykłady kodu pokazujące, jak zdefiniować metody GET, POST, PUT i DELETE. Szczegółowy kod można znaleźć w filmie od 26:25.

Ta praktyczna demonstracja pomaga programistom zrozumieć, jak tworzyć i konfigurować kontrolery API do obsługi różnych typów żądań.

REST API

Tim Corey przedstawia REST (Representational State Transfer) i jego zasady:

  1. Czym jest REST: REST to styl architektury służący do projektowania aplikacji sieciowych. Opiera się na komunikacji bezstanowej i wykorzystuje standardowe metody HTTP (GET, POST, PUT, DELETE) do wykonywania operacji.

  2. Zasady RESTful: Interfejsy API RESTful wykorzystują wzorce adresów URL do reprezentowania zasobów. Na przykład, /users pobiera wszystkich użytkowników, podczas gdy /users/5 pobiera konkretnego użytkownika o identyfikatorze 5.

  3. Zgodność z REST: Tim zauważa, że osiągnięcie pełnej zgodności z REST może być trudne, ponieważ REST był pierwotnie modelem teoretycznym. Jednak przestrzeganie zasad REST może prowadzić do bardziej intuicyjnych i spójnych interfejsów API.

Tim podkreśla, że dążąc do zgodności z REST, przy projektowaniu API należy kierować się względami praktycznymi, aby zapewnić użyteczność i funkcjonalność.

Aplikacja z minimalnym API

Corey przedstawia Minimal APIs, uproszczone podejście do tworzenia interfejsów API w .NET Core:

  1. Konfiguracja minimalnych interfejsów API: Tim pokazuje, jak utworzyć projekt z minimalnym interfejsem API, odznaczając opcję "Użyj kontrolerów" podczas konfiguracji projektu.

  2. Uproszczony kod: Minimalne API eliminują potrzebę stosowania kontrolerów i atrybutów routingu, pozwalając programistom definiować punkty końcowe bezpośrednio w Program.cs za pomocą metod takich jak app.MapGet(), app.MapPost(), itp.

  3. Przykład kodu: Tim podaje przykład kodu, w którym pojedynczy wiersz kodu definiuje punkt końcowy. Pokazuje, jak przypisz żądanie GET do punktu końcowego przy minimalnej konfiguracji.
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Hosting;

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Hosting;

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();

Minimalne interfejsy API mają na celu uproszczenie programowania, zwłaszcza w przypadku mniejszych aplikacji lub mikrousług.

Dłączego Minimal API

Tim omawia zalety minimalnych interfejsów API:

  1. Utwórz nowy projekt: Tim tworzy nowy projekt Web API, ale tym razem w dodatkowych informacjach odznaczył opcję "użyj kontrolerów". Pozwala to na tworzenie projektów przy użyciu minimalnej liczby interfejsów API.

    Tworzenie minimalnego API

  2. Ograniczona ilość kodu szablonowego: Minimalne interfejsy API ograniczają ilość kodu szablonowego, eliminując potrzebę stosowania kontrolerów i dodatkowych konfiguracji routingu.

  3. Prostota: Oferują one bardziej bezpośrednie podejście do prostych interfejsów API, co ułatwia zrozumieniuiuiuiuie i utrzymanie kodu.

  4. Mikrousługi: Minimalne interfejsy API są szczególnie przydatne w przypadku mikrousług, gdzie API musi wykonywać ograniczony zestaw czynności i nie wymaga pełnego zestawu funkcji tradycyjnych kontrolerów.

Tim przyznaje, że chociaż minimalne interfejsy API są korzystne w niektórych scenariuszach, tradycyjne kontrolery mogą być bardziej odpowiednie dla większych lub bardziej złożonych aplikacji.

Najlepsze praktyki, podsumowanie i uwagi końcowe

Tim Corey kończy swój tutorial, przedstawiając najlepsze praktyki dotyczące tworzenia interfejsów API:

  1. Rozdział obowiązków: Unikaj umieszczania logiki biznesowej bezpośrednio w Program.cs lub akcjach kontrolera. Zamiast tego przenieś logikę do oddzielnych bibliotek klas lub usług, aby zachować przejrzystość kodu i przestrzegać zasad SOLID.

  2. API jako interfejs użytkownika: Traktuj API jako interfejs użytkownika, skupiając się na tym, by były intuicyjne i dobrze udokumentówane. Tim podkreśla znaczenie przejrzystej dokumentacji i efektywnego projektowania API.

  3. Swagger i dokumentacja: Wykorzystaj Swagger do dokumentacji API i zarządzania wersjami. Tim wyjaśnia, w jaki sposób komentarze XML w kodzie mogą służyć do generowania szczegółowej dokumentacji API.

  4. Dodatkowe uwagi: Weź pod uwagę buforowanie, ograniczanie przepustowości i inne czynniki, aby poprawić wydajność i bezpieczeństwo API.

Tim zachęca programistów do poznawania różnych typów projektów i narzędzi, podkreślając wartość zrozumieniuiuiuiuia interfejsów API i ich roli we współczesnym tworzeniu oprogramowania.

Wnioski

Film Tima Coreya zawiera szczegółowy przewodnik po tworzeniu API i zarządzaniu nimi w .NET Core, obejmujący zarówno podejście RESTful, jak i Minimal API. Jego spostrzeżenia nie tylko pomagają programistom zrozumieć podstawy projektowania API, ale także oferują praktyczne porady dotyczące wdrażania skutecznych rozwiązań.

Aby uzyskać bardziej szczegółowe samouczki i informacje na temat języka C# oraz innych typów projektów, odwiedź kanał YouTube Tima Coreya, IAmTimCorey.

Hero Worlddot related to Tworzenie aplikacji webowej C# za pomocą ASP.NET Core
Hero Affiliate related to Tworzenie aplikacji webowej C# za pomocą ASP.NET Core

Zarabiaj więcej, dzieląc się tym, co kochasz

Tworzysz treści dla deweloperów pracujących z .NET, C#, Java, Python, czy Node.js? Zamień swoją wiedzę specjalistyczną na dodatkowy dochód!

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie