*256 Bit SSL Sertifikası * Full Mobil Uyumlu * Full SEO Uyumlu
İsterseniz Mobil Uygulama Seçeneğiyle
Blazor, .NET Core platformu üzerinde modern web uygulamaları geliştirmek için kullanılan bir framework'tür. Blazor uygulamalarının sunucu tarafında çalışan web API'ler, gelecek nesil web uygulama geliştirmenin önde gelen teknikleri arasında yer almaktadır. Bu yazıda, Blazor Web API oluşturma konusunda detaylı bir rehber sunacağız.
Blazor Web API Oluşturma
1. Web API Projesi Oluşturma
Visual Studio'da yeni bir .NET Core web projesi oluşturun ve proje tipini \"Web API\" olarak ayarlayın.
2. Dependancy Injection Ekleme
Uygulamanın kendi adımları ekleyeceğimiz servislerini de Dependency Injection kullanarak Web API ortamında kullanabilmek için servisleri ConfigureServices () yöntemiyle eklemeliyiz. Servisleri ConfigureServices'e eklemek için aşağıdaki kodu kullanabilirsiniz.
```csharp
services.AddScoped
```
3. Routing Tanımları
Blazor Web API'nda da normal Web API'larda olduğu gibi HTTP get ve post istekleri alır. Bu nedenle gelen isteklere nasıl cevap verileceğini belirlememiz gerekmektedir. Özellikle Get ve Post işlemlerini nasıl yönlendireceğimizi belirlemek önemlidir. Routing tanımları için Controller ve Action oluşturmamız gerekebilir.
```csharp
[ApiController]
public class MyController : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
return Ok(\"Blazor Web API'ye hoş geldiniz.\");
}
}
```
Yukarıda örnek bir Controller oluşturduk ve bu Controller'a HttpGet operasyonunu ekledik. Daha özel bir örnek olarak, Controller'ın contructor'ında kullanacağımız Dependency Injection örneği;
```csharp
private readonly IMyService _myService;
public MyController(IMyService myService)
{
_myService = myService;
}
```
4. Veritabanı İşlemleri
Projemizde veritabanı işlemleri yapmak istiyorsak, öncelikle ef core db context tanımlamamız gerekmektedir. Sağ üst bölümde eklenmesi gerekiyorsa \"Nuget Manager\" üzerinden ef core paketlerini yükleyebilirsiniz. Ayrıca Startup dosyasında da db context eklememiz gerekiyor.
```csharp
services.AddDbContext
```
Veritabanı işlemleri yapmak için Controller'ımızın Constructor metodu içerisinde ef core DbContext çağrısı oluşturabilirsiniz. Bunun yanı sıra öncelikle DbContext'imiz üzerinde yapılmış olan CRUD operasyonları da Controller'a eklememiz gerekmektedir. Aşağıdaki örnekte DbContext'in SaveChanges operasyonu çağrılmıştır.
```csharp
public class ProductController : ControllerBase
{
private readonly DBContext _dbContext;
public ProductController(DBContext dbContext)
{
_dbContext = dbContext;
}
[HttpPost]
public IActionResult Post(ProductDTO productDTO)
{
Product product = new Product();
product.Identifier = productDTO.Identifier;
product.Name = productDTO.Name;
product.Family = productDTO.Family;
product.Description = productDTO.Description;
product.Code = productDTO.Code;
product.Price = productDTO.Price;
_dbContext.Add(product);
_dbContext.SaveChanges();
return Ok(new { message = $\"Product '{productDTO.Name}' was added\" });
}
}
```
5. Authorize Kullanımı
Blazor'da Web API kontrolu için Authorize yapısını kullanabilirsiniz. Bu yapının kullanımı için öncelikle, Startup sınıfı içinde \"Authorization\" eklemanız gerekmektedir.
```csharp
services.AddAuthorization(options =>
{
options.AddPolicy(\"SuperUser\", policy => policy.RequireClaim(\"Role\", \"SuperUser\"));
options.AddPolicy(\"NormalUser\", policy => policy.RequireClaim(\"Role\", \"NormalUser\"));
});
```
Ardından kullanıcılarınızı belirlediğiniz ayrı bir controller oluşturmalısınız.
```csharp
[Authorize(Policy = \"SuperUser\")]
public class SuperUserController : ControllerBase
{
}
```
Sık Sorulan Sorular
Q: Blazor Web API ile normal Web API arasındaki fark nedir?
A: Blazor Web API, Blazor uygulamaları tarafından erişilebilir özelliktedir ve uygulama aynı sunucu tarafında çalışmaktadır. Normal Web API'lar ise farklı İstemcilerden (Web sayfası, Mobil uygulamalar vb.) istekler alırlar ve ayrı bir sunucu tarafında çalışır.
Q: Blazor Web API'da veritabanı işlemleri yapılabiliyor mu?
A: Evet, Blazor Web API, .NET Core tabanında olduğu için Veri Tabanı işlemleri yapılabilir.
Q: Blazor Web API nasıl test edilir?
A: Blazor Web API'lar Postman gibi HTTP istekleri yapmak için tasarlanmış araçlarla test edilebilir. Öncelikle, Blazor Web API'nin sunucu tarafında çalıştığından emin olun ve ardından Blazor Web API'nin Yönlendirme URL'sini kullanarak istekleri yapabilirsiniz.
Q: Blazor Web API'larınızı tüm İstemcilerden erişilebilir hale getirebilir miyim?
A: Evet, Blazor Web API'larınız, \"CORS\" - Cross-Origin Resource Sharing'i ayarlayarak tüm İstemcilerden hizmet verebilir. Bu ayarlar Startup.cs içinde yapılabilir. Örneğin;
```csharp
services.AddCors(o => o.AddPolicy(\"AllowAll\", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
}));
```
Pipeline içinde de diğer bir uğraş olan \"UseCors\"
```csharp
app.UseCors(\"AllowAll\");
```
Q: Blazor Web API, diğer sunucu taraflı dillerdeki web API'larla karşılaştırıldığında ne kadar hızlıdır?
A: Blazor Web API, .NET Core tabanında olduğu için hızlıdır. Ancak bu, uygulamanızın karmaşıklığına ve iş yüküne bağlı olacaktır. Dien karşılaştırmalar için test sonuçlarını karşılaştırabilirsiniz."
Blazor, .NET Core platformu üzerinde modern web uygulamaları geliştirmek için kullanılan bir framework'tür. Blazor uygulamalarının sunucu tarafında çalışan web API'ler, gelecek nesil web uygulama geliştirmenin önde gelen teknikleri arasında yer almaktadır. Bu yazıda, Blazor Web API oluşturma konusunda detaylı bir rehber sunacağız.
Blazor Web API Oluşturma
1. Web API Projesi Oluşturma
Visual Studio'da yeni bir .NET Core web projesi oluşturun ve proje tipini \"Web API\" olarak ayarlayın.
2. Dependancy Injection Ekleme
Uygulamanın kendi adımları ekleyeceğimiz servislerini de Dependency Injection kullanarak Web API ortamında kullanabilmek için servisleri ConfigureServices () yöntemiyle eklemeliyiz. Servisleri ConfigureServices'e eklemek için aşağıdaki kodu kullanabilirsiniz.
```csharp
services.AddScoped
```
3. Routing Tanımları
Blazor Web API'nda da normal Web API'larda olduğu gibi HTTP get ve post istekleri alır. Bu nedenle gelen isteklere nasıl cevap verileceğini belirlememiz gerekmektedir. Özellikle Get ve Post işlemlerini nasıl yönlendireceğimizi belirlemek önemlidir. Routing tanımları için Controller ve Action oluşturmamız gerekebilir.
```csharp
[ApiController]
public class MyController : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
return Ok(\"Blazor Web API'ye hoş geldiniz.\");
}
}
```
Yukarıda örnek bir Controller oluşturduk ve bu Controller'a HttpGet operasyonunu ekledik. Daha özel bir örnek olarak, Controller'ın contructor'ında kullanacağımız Dependency Injection örneği;
```csharp
private readonly IMyService _myService;
public MyController(IMyService myService)
{
_myService = myService;
}
```
4. Veritabanı İşlemleri
Projemizde veritabanı işlemleri yapmak istiyorsak, öncelikle ef core db context tanımlamamız gerekmektedir. Sağ üst bölümde eklenmesi gerekiyorsa \"Nuget Manager\" üzerinden ef core paketlerini yükleyebilirsiniz. Ayrıca Startup dosyasında da db context eklememiz gerekiyor.
```csharp
services.AddDbContext
```
Veritabanı işlemleri yapmak için Controller'ımızın Constructor metodu içerisinde ef core DbContext çağrısı oluşturabilirsiniz. Bunun yanı sıra öncelikle DbContext'imiz üzerinde yapılmış olan CRUD operasyonları da Controller'a eklememiz gerekmektedir. Aşağıdaki örnekte DbContext'in SaveChanges operasyonu çağrılmıştır.
```csharp
public class ProductController : ControllerBase
{
private readonly DBContext _dbContext;
public ProductController(DBContext dbContext)
{
_dbContext = dbContext;
}
[HttpPost]
public IActionResult Post(ProductDTO productDTO)
{
Product product = new Product();
product.Identifier = productDTO.Identifier;
product.Name = productDTO.Name;
product.Family = productDTO.Family;
product.Description = productDTO.Description;
product.Code = productDTO.Code;
product.Price = productDTO.Price;
_dbContext.Add(product);
_dbContext.SaveChanges();
return Ok(new { message = $\"Product '{productDTO.Name}' was added\" });
}
}
```
5. Authorize Kullanımı
Blazor'da Web API kontrolu için Authorize yapısını kullanabilirsiniz. Bu yapının kullanımı için öncelikle, Startup sınıfı içinde \"Authorization\" eklemanız gerekmektedir.
```csharp
services.AddAuthorization(options =>
{
options.AddPolicy(\"SuperUser\", policy => policy.RequireClaim(\"Role\", \"SuperUser\"));
options.AddPolicy(\"NormalUser\", policy => policy.RequireClaim(\"Role\", \"NormalUser\"));
});
```
Ardından kullanıcılarınızı belirlediğiniz ayrı bir controller oluşturmalısınız.
```csharp
[Authorize(Policy = \"SuperUser\")]
public class SuperUserController : ControllerBase
{
}
```
Sık Sorulan Sorular
Q: Blazor Web API ile normal Web API arasındaki fark nedir?
A: Blazor Web API, Blazor uygulamaları tarafından erişilebilir özelliktedir ve uygulama aynı sunucu tarafında çalışmaktadır. Normal Web API'lar ise farklı İstemcilerden (Web sayfası, Mobil uygulamalar vb.) istekler alırlar ve ayrı bir sunucu tarafında çalışır.
Q: Blazor Web API'da veritabanı işlemleri yapılabiliyor mu?
A: Evet, Blazor Web API, .NET Core tabanında olduğu için Veri Tabanı işlemleri yapılabilir.
Q: Blazor Web API nasıl test edilir?
A: Blazor Web API'lar Postman gibi HTTP istekleri yapmak için tasarlanmış araçlarla test edilebilir. Öncelikle, Blazor Web API'nin sunucu tarafında çalıştığından emin olun ve ardından Blazor Web API'nin Yönlendirme URL'sini kullanarak istekleri yapabilirsiniz.
Q: Blazor Web API'larınızı tüm İstemcilerden erişilebilir hale getirebilir miyim?
A: Evet, Blazor Web API'larınız, \"CORS\" - Cross-Origin Resource Sharing'i ayarlayarak tüm İstemcilerden hizmet verebilir. Bu ayarlar Startup.cs içinde yapılabilir. Örneğin;
```csharp
services.AddCors(o => o.AddPolicy(\"AllowAll\", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
}));
```
Pipeline içinde de diğer bir uğraş olan \"UseCors\"
```csharp
app.UseCors(\"AllowAll\");
```
Q: Blazor Web API, diğer sunucu taraflı dillerdeki web API'larla karşılaştırıldığında ne kadar hızlıdır?
A: Blazor Web API, .NET Core tabanında olduğu için hızlıdır. Ancak bu, uygulamanızın karmaşıklığına ve iş yüküne bağlı olacaktır. Dien karşılaştırmalar için test sonuçlarını karşılaştırabilirsiniz."
*256 Bit SSL Sertifikası * Full Mobil Uyumlu * Full SEO Uyumlu
İsterseniz Mobil Uygulama Seçeneğiyle