Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Tim Corey
52m 05s
Web uygulamaları oluşturmak, modern geliştiriciler için temel bir beceridir ve temel proje yapılarını anlamak esastır. Tim Corey'nin "Web API'ye Giriş" videosundan ilham alarak bu makale, ASP.NET Core çerçevesini kullanarak web uygulamaları kurmanın karmaşıklıklarına derinlemesine dalar.
Tim'in içgörülerini izleyerek web uygulamanızı kurma, yapılandırma ve optimize etme yollarını keşfedeceğiz, ASP.NET Core çerçevesinin tam potansiyelinden yararlanarak etkili ve sürdürülebilir web sayfaları ve API'ler oluşturmayı keşfediyoruz. İster web geliştirmeye yeni başlıyor olun, ister becerilerinizi geliştirmek istiyor olun, bu kılavuz, web geliştirme iş yükünün karmaşıklıklarını nasıl aşacağınızı göstererek, etkin ve yüksek performanslı web uygulamaları oluşturmak için gereken bilgileri sağlar.
Tim Corey, öğreticiye ASP.NET Core ile API'lar oluşturma konusu tanıtarak başlar. Cihazlar arasında iletişimi kolaylaştıran, modern yazılım geliştirmede API'lerin oynadığı kritik rolü açıklayarak, güçlü ve ölçeklenebilir web uygulamaları oluşturmak için API temellerini anlamak bir önem taşır.
Tim, farklı web geliştirme çerçeveleri ('Blazor web sunucusu' ve 'Blazor web derlemesi' gibi) arasında entegrasyon sağlamak için ASP.NET Core'un Christians AS'in temel rolünü açıkladı. Blazor sayfalarının temel proje türü bile çoklu projelerde çeşitli işlevselliklerin sorunsuz entegrasyonunu etkinleştirir.
Başlangıç için, Tim Corey, yeni bir ASP.NET Core Web API projesi kurmayı gösterir. Videosunda özetlenen adımlar şunlardır:




Bu kurulum, Program.cs, controller klasörü ...
Tim Corey'nin videosunda 5:57'de, ASP.NET Core tarafından oluşturulan varsayılan API uygulamasının bir görünümünü sağlar.
Tim, geliştiricilerin kutudan çıktığı gibi elde ettiklerini göstermek için varsayılan uygulamayı çalıştırarak başlar. Çalıştırıldığında, proje API'yı oluşturur, gerekli NuGet paketlerini indirir ve bir web sayfasını başlatır. Bu ilk kurulum, API'nin temel yapısını ve işlevlerini herhangi bir değişiklik yapmadan gösterir.

Başlatılan web sayfası, şu anda OpenAPI olarak bilinen Swagger tarafından desteklenmektedir. Swagger, API ile etkileşim için kullanıcı dostu bir arayüz sağlar. Hem geliştiricilerin hem de geliştirici olmayanların API uç noktalarını kolayca anlamalarını ve test etmelerini sağlar. Bu arayüz, API'nin nasıl çalıştığını görselleştirmek ve belgeler oluşturmak için özellikle faydalıdır.
Swagger, API'deki mevcut uç noktaları sergiler. Varsayılan kurulumda, önceden yapılandırılmış uç noktalardan biri 'hava tahmini' uç noktasıdır. Bu uç noktasına tıklayarak ve 'Deneyin' özelliğini kullanarak, kullanıcılar API çağrısını gerçekleştirebilir ve yanıtı görebilir. Bu yanıt, JSON formatında bir hava tahmini içerir ve verilerin API'den nasıl döndüğünü gösterir.
Tim, 8:32'de, ham JSON verileri tarayıcıdan doğrudan okumak biraz zor olabilirken, Swagger'ın dokümantasyon katmanının bunu çok daha sindirilebilir hale getirdiğini vurgular. Dokümantasyon, uç nokta hakkında, istek yöntemi (GET, POST, vb.), döndürülen verilerin yapısı ve gerekli parametreler dahil olmak üzere ayrıntılı bilgiler sağlar.
Swagger ayrıca 9:10'da Tim'in işaret ettiği gibi, API'yi makine tarafından okunabilir bir formatta belgeleyen bir JSON dosyası oluşturur. Bu belge, API ile etkileşimde bulunması gereken diğer uygulamalar için kritik öneme sahiptir, çünkü mevcut uç noktaları, veri şemalarını ve beklenen yanıtları açıklar.
Tim, 9:29'da API'lerde versiyonlamanın önemini vurgular. Varsayılan kurulum, birden fazla API versiyonunun olasılığına işaret eden bir versiyon göstergesi içerir. Versiyonlama, geriye dönük uyumluluğu sürdürmek için hayati öneme sahiptir. API'deki değişiklikler mevcut istemcileri kırabileceğinde, birden fazla sürüm olması, geliştiricilerin mevcut kullanıcıları bozmadan yeni özellikler veya değişiklikler sunmasına olanak tanır.
Tim Corey, 11:22'de API'lerin (Uygulama Programlama Arayüzleri) modern web geliştirmedeki temel rolünü açıklar. Farklı yazılım bileşenleri arasında veri alışverişini yönetmenin ve güvenliğini sağlamanın önemini vurgular.
Tim, çoğu uygulamanın veri - elde etme, manipülasyon ve gösterim - etrafında döndüğünü vurgular. API'ler, kullanıcı arayüzü ile alttaki veriler arasında ara bulucu olarak hizmet eder, güvenli ve verimli bir veri erişim yolu sağlar. Bu merkezileşme, birkaç nedenden dolayı önemlidir:
Güvenlik: API'ler veri erişimini yönetmek için güvenli bir yol sunar. Mobil ve istemci tarafındaki uygulamalar, müşteri kodu içinde veritabanı kimlik bilgilerini gömmenin ortaya çıkan ciddi güvenlik risklerini önlemek için doğrudan veritabanlarına bağlanmamalıdır.
Soyutlama: API'ler veri katmanını kullanıcı arayüzünden soyutlar, böylece farklı istemci uygulamaları (mobil uygulamalar, web uygulamaları, masaüstü uygulamaları) veritabanını veya kimlik bilgilerini açığa çıkarmadan aynı veri kaynağı ile etkileşime geçebilir.
Tim, API'lerin belirli çerçeveler veya dillere sınırlı olmadığını belirtir. Örneğin, bir C# API, Angular, React veya Vue gibi JavaScript çerçeveleri tarafından erişilebilir, API'lerin platformlar arası yeteneklerini sergiler.
Tim Corey, 15:21'de, bir ASP.NET Core API projesinin yapısını ve işlevselliğini ayrıntılı bir incelemeye başlar. Aşağıda, HTTP sunucusu ve sunucu tarafı teknolojilerle çalışırken bir API web uygulaması oluştururken anlamanız gereken önemli noktalar bulunmaktadır:
Tim Program.cs'yi gözden geçirir, web uygulamasını oluşturduğunu ve denetleyiciler ve Swagger (OpenAPI) için bağımlılık enjeksiyonu gibi hizmetleri ayarladığını belirtir. Kod, uygulamayı oluşturmadan ve çalıştırmadan önce temel hizmetleri ayarlar.
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();Imports Microsoft.AspNetCore.Builder
Imports Microsoft.Extensions.DependencyInjection
Imports Microsoft.Extensions.Hosting
Dim 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()
Dim app = builder.Build()
' Configure the HTTP request pipeline.
If app.Environment.IsDevelopment() Then
app.UseSwagger()
app.UseSwaggerUI()
End If
app.UseHttpsRedirection()
app.UseAuthorization()
app.MapControllers()
app.Run()Tim launchSettings.json içindeki ortam ayarlarının nasıl yapılandırıldığını açıklar. Varsayılan ortam, yerel test için 'Geliştirme' olarak ayarlanır ve Swagger'ı etkinleştirir. Üretimde, güvenlik için Swagger genellikle devre dışı bırakılır, ancak geliştirme kontrolünü kaldırarak etkinleştirilebilir.
{
"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"
}
}
}
}
Tim, HTTPS yönlendirmesi ve denetleyicilerin eşlenmesini belirtir. Bu yapılandırma, API yollarının düzgün bir şekilde yapılandırılmasını sağlar. HTTP istek ve yanıt yollarında açıklık için bir 'api' ön eki kullanmayı tercih eder, bu da API yollarının farklı olmasını sağlamak için değiştirilebilir.
Tim WeatherForecastController.cs içine girerek, rota yapılandırmasının altını çizer. Varsayılan rota /weatherforecast olup, 'api' öneki eklenerek değiştirilebilir. Denetleyici belirtilen rota aracılığıyla erişilebilen HTTP GET kullanarak veri alır.
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; }
}Imports Microsoft.AspNetCore.Mvc
<ApiController>
<Route("[controller]")>
Public Class WeatherForecastController
Inherits ControllerBase
Private Shared ReadOnly Summaries As String() = New String() _
{"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"}
Private ReadOnly _logger As ILogger(Of WeatherForecastController)
Public Sub New(logger As ILogger(Of WeatherForecastController))
_logger = logger
End Sub
<HttpGet>
Public Function [Get]() As IEnumerable(Of WeatherForecast)
Return Enumerable.Range(1, 5).Select(Function(index) New WeatherForecast With {
.Date = DateTime.Now.AddDays(index),
.TemperatureC = Random.Shared.Next(-20, 55),
.Summary = Summaries(Random.Shared.Next(Summaries.Length))
}).ToArray()
End Function
End Class
Public Class WeatherForecast
Public Property [Date] As DateTime
Public Property TemperatureC As Integer
Public Property Summary As String
End ClassTim, HTTP fiillerinin (GET, POST, PUT, DELETE) API uç noktalarını nasıl tanımladığını açıklar. GET isteği için tarayıcı, denetleyicide belirtilen yöntemi çağırır. Diğer fiiller için test etmek için Postman gibi araçlara ihtiyaç vardır.
Tim, bir API denetleyicisi oluşturma sürecini göstermektedir:
Bir Denetleyici Ekleme: 'Controllers' klasörüne sağ tıklayın ve 'Add > Controller'ı seçin.
API Denetleyicisi Seçme: 'API Controller - Empty'yi seçin ve denetleyici için bir ad sağlayın.

Bu uygulamalı gösterim, geliştiricilerin çeşitli istek türlerini işlemek için API denetleyicilerini nasıl oluşturacaklarını ve yapılandıracaklarını anlamalarına yardımcı olur.
Tim Corey, REST'i (Temsili Durum Transferi) ve ilkelerini tanıtır:
REST Nedir: REST, ağ uygulamalarını tasarlamak için bir mimari tarzdır. Durumsuz iletişime dayanır ve işlemleri gerçekleştirmek için standart HTTP yöntemlerini (GET, POST, PUT, DELETE) kullanır.
RESTful İlkeler: RESTful API'ler kaynakları temsil etmek için URL desenlerini kullanır. Örneğin, /users tüm kullanıcıları alırken, /users/5 ID'si 5 olan belirli bir kullanıcıyı alır.
REST Uyumu: Tim, tam REST uyumuna ulaşmanın zor olabileceğini, çünkü REST'in aslında teorik bir model olduğunu not eder. Ancak, REST ilkelerine bağlı kalmak daha sezgisel ve tutarlı API'lere yol açabilir.
Tim, REST uyumuna ulaşmaya çalışırken, API tasarımını kullanılabilirlik ve işlevselliği sağlamak için pratik düşüncelerin yönlendirmesi gerektiğini vurgular.
Corey, ASP.NET Core'da API geliştirmeye yönelik basit bir yaklaşım olan Minimal API'leri tanıtır:
Minimal API'lerin Kurulumu: Tim, projeyi kurarken denetleyici kullanım seçeneğini işaretlemeden bir Minimal API projesi nasıl oluşturulacağını gösterir.
Basitleştirilmiş Kod: Minimal API'ler, kontrolcüler ve rotalama özelliklerine duyulan ihtiyacı ortadan kaldırır, geliştiricilerin Program.cs içinde doğrudan app.MapGet(), app.MapPost() gibi yöntemler kullanarak uç noktaları tanımlamasına olanak tanır.
Kod Örneği: Tim, tek bir kod satırının bir uç noktayı nasıl tanımladığına dair bir kod örneği verir. Bir GET isteğini minimal yapılandırma ile bir uç noktaya nasıl eşleştireceğini gösterir.
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Hosting;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();Imports Microsoft.AspNetCore.Builder
Imports Microsoft.Extensions.Hosting
Dim builder = WebApplication.CreateBuilder(args)
Dim app = builder.Build()
app.MapGet("/", Function() "Hello World!")
app.Run()Minimal API'ler, özellikle daha küçük uygulamalar veya mikro hizmetler için geliştirmeyi basitleştirmek için tasarlanmıştır.
Tim, Minimal API'lerin faydalarını tartışır:

Azaltılmış Kalıp Kod: Minimal API'ler denetleyicilere ve ek yönlendirme yapılandırmalarına olan ihtiyacı ortadan kaldırarak kalıp kod miktarını azaltır.
Sadeliği: Basit API'ler için daha anlaşılır bir yaklaşım sunar, kodun anlaşılmasını ve bakımını kolaylaştırır.
Mikro Hizmetler: Minimal API'ler, API'nin sınırlı bir dizi eylemi gerçekleştirmesi gereken ve geleneksel denetleyicilerin tam özellik kümesine ihtiyaç duymayan mikro hizmetler için özellikle yararlıdır.
Tim, Minimal API'lerin belirli senaryolar için faydalı olduğunu kabul ederken, daha büyük veya daha karmaşık uygulamalar için geleneksel denetleyicilerin daha uygun olabileceğini belirtiyor.
Tim Corey, API geliştirme için en iyi uygulamalarla eğitimini sona erdiriyor:
Kapsamların Ayrılması: İş mantığını doğrudan Program.cs veya kontrolcü eylemlerine yerleştirmekten kaçının. Aksine, kod temizliğini korumak ve SOLID ilkelerine uymak için mantığı ayrı sınıf kütüphanelerine ya da hizmetlere taşıyın.
API'nin Bir Kullanıcı Arayüzü Olarak Görülmesi: API'leri bir kullanıcı arayüzü olarak ele alın, onları sezgisel ve iyi belgelenmiş yapmaya odaklanın. Tim, sağlam belgelerin ve etkili API tasarımının önemini vurguluyor.
Swagger ve Belgeler: API belgeleri ve sürümleme için Swagger'ı kullanın. Tim, XML yorumlarının kodda nasıl kullanılarak ayrıntılı API belgelerinin üretilebileceğini açıklar.
Ek Hususlar: API performansını ve güvenliğini artırmak için önbellekleme, hız sınırlama gibi faktörleri değerlendirin.
Tim, geliştiricilerin farklı proje türlerini ve araçlarını keşfetmelerini teşvik eder, API'leri anlamanın ve modern yazılım geliştirmedeki rollerini vurgular.
Tim Corey'nin videosu, ASP.NET Core'da API'ler oluşturma ve yönetme üzerine kapsamlı bir kılavuz sunar, hem RESTful hem de Minimal API yaklaşımlarını ele alır. Onun içgörüleri, geliştiricilerin API tasarımının özünü kavramalarına yardımcı olmanın yanı sıra, etkili çözümler uygulama konusunda pratik tavsiyeler sunar.
C# ve diğer proje türleri hakkında daha derinlemesine bilgiler ve öğreticiler için, Tim Corey'nin YouTube kanalını ziyaret ettiğinizden emin olun, IAmTimCorey.
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy