İyi günler Türk Hack Team ailesi
Bugün sizlerle beraber Asp.Net Core ile API yapımına bakıcağız umarım beğenirsiniz.
API'ın temelerini atalım.
İlk başta terminalimize geliyoruz. Bir APİ templateti oluşturmak için yazmamız gereken komut çok ama çok basit.
Ardından benim bir paketi projeme dağil etmem gerekiyor bunun için ise
komudunu giriyorum.
Simdi kod editörümüze girelim ve bir başlangıç yapalım. Bundan önce projemiz çalışıyor mu çalışmıyor mu diye test etmemiz gerekiyor bu yüzden
kodunu terminale girin. Ardından projemizi izliyici olarak başlatalım. Bunun için ise
komudunu girmemiz yeterli olucaktır.
Gördüğünüz üzere API sorunsuz bir şekilde çalışıyor. Simdi biz bu APİ'a birde database'i eklemek istiyoruz ona bakalım. Ardından 0'dan bir api yazalım.
Simdi WeatherForecastContext.cs diye bir dosya oluşturalım. Bu dosyanın içerisine şu komutları girelim.
Bu işlemi bitirdikten sonra Program.cs isimli dosyamıza geliyoruz. Bu dosyada belirli değişiklikler yapmamız gerekiyor. Öncelikle Swagger çağrılarının hepsini kaldırıyoruz. Ve database'imizi program.cs belirtiyoruz.
Bu işlemlerden sonra,
Kod:
dotnet new webapi
Ardından benim bir paketi projeme dağil etmem gerekiyor bunun için ise
Kod:
dotnet add package Microsoft.EntityFrameworkCore.InMemory --prerelease
Simdi kod editörümüze girelim ve bir başlangıç yapalım. Bundan önce projemiz çalışıyor mu çalışmıyor mu diye test etmemiz gerekiyor bu yüzden
Kod:
dotnet dev-certs https --trust
Kod:
dotnet watch run
Gördüğünüz üzere API sorunsuz bir şekilde çalışıyor. Simdi biz bu APİ'a birde database'i eklemek istiyoruz ona bakalım. Ardından 0'dan bir api yazalım.
Simdi WeatherForecastContext.cs diye bir dosya oluşturalım. Bu dosyanın içerisine şu komutları girelim.
C#:
using Microsoft.EntityFrameworkCore;
using System.Diagnostics.CodeAnalysis;
namespace TürkHackTeamDers2
{
public class WeatherForecastContext : DbContext
{
public WeatherForecastContext(DbContextOptions<WeatherForecastContext> options)
: base(options)
{
}
public DbSet<WeatherForecast> WeatherForecastItems { get; set; } = null!;
}
}
Bu işlemi bitirdikten sonra Program.cs isimli dosyamıza geliyoruz. Bu dosyada belirli değişiklikler yapmamız gerekiyor. Öncelikle Swagger çağrılarının hepsini kaldırıyoruz. Ve database'imizi program.cs belirtiyoruz.
C#:
using Microsoft.EntityFrameworkCore;
using TürkHackTeamDers2;
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();
builder.Services.AddDbContext<WeatherForecastContext>(opt =>
opt.UseInMemoryDatabase("TodoList"));
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
// app.UseSwagger();
// app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
Kod:
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design --prerelease[/COLOR][/B][/SIZE][/CENTER]
[SIZE=5][B][COLOR=rgb(255, 255, 255)][CENTER]dotnet add package Microsoft.EntityFrameworkCore.Design --prerelease
dotnet add package Microsoft.EntityFrameworkCore.SqlServer --prerelease
dotnet tool install -g dotnet-aspnet-codegenerator --version 6.0.0-preview.7.21413.1
dotnet aspnet-codegenerator controller -name WeatherForecastController -async -api -m WeatherForecast -dc WeatherForecastContext -outDir Controllers
bu komutu terminalde çalıştırıyoruz. Simdi bu işlemleri tamamladıysak sırada sıfırdan bir APİ yazmak kaldı.
Simdi ilk başta sıfırdan bir proje oluşturalım.
Bunun için ise aşağıdaki komudu terminale giriniz.
Buraya ilk başta bir Models klasörü oluşturalım. Simdi ben bir şirket için personellerini kontrol edebilmesi için bir APİ oluşturacağım tabi siz arzu ederseniz bunu başka amaçlar içinde kullanabilirsiniz. Models kısmına Person diye yeni bir dosya açıyorum.
Simdi bu modelleme işini halletiğimize göre sırada controllerları oluşturmak var. Controllers diye yeni bir dosya oluşturuyorum ardından bu klasörün içerisine PersonController.cs isminde bir dosya oluşturuyorum.
Simdi bu dosyayı controller olarak kullanıcağız. Bu yüzden bir kaç kod girmemiz gerekiyor.
Bundan sonra ise bizim bir Context oluşturmamız gerekiyor. Models kısmına PersonContext.cs isminde bir adet context oluşturdum ardından ise belirli komutları içerisine giriyorum.
Simdi bu Context'i program.cs dosyasına dagil ediyoruz. Ve dosyada bir kaç değisiklik yapmak durumundayız. Bu değisiklikler,
Controllerları eklemek, yazılımın bir APİ olduğunu beli etmek ve son olarakta database'i tanıtmak olucaktır.
Bu işlemlerden sonra tekrardan Controllerlara dönelim. Temel olarak buraya Context'imizi bağlıyalım bunun için ise,
bu kodu kullanabilirsiniz. Bundan sonrası ise çok kolay olduğunu söylemekteyim. Bundan sonrası controllerin fonksiyonlarını ayarladığınız kısım ben size simdi örnek bir şablon vermek isterim.
Burada basit bir şekilde id üzerinden person buluyor. Siz bu sablonu örnek sablon olarak kullanabilirsiniz.
Bugünlük konum bu kadar umarım beğenmişsinizdir iyi günler dilerim sağlıcakla kalın.
Simdi ilk başta sıfırdan bir proje oluşturalım.
Bunun için ise aşağıdaki komudu terminale giriniz.
Kod:
dotnet new web
Buraya ilk başta bir Models klasörü oluşturalım. Simdi ben bir şirket için personellerini kontrol edebilmesi için bir APİ oluşturacağım tabi siz arzu ederseniz bunu başka amaçlar içinde kullanabilirsiniz. Models kısmına Person diye yeni bir dosya açıyorum.
C#:
namespace WEBAPI.Models
{
public class Person
{
public string Name{get;set;}
public string LastName {get;set;}
public int Number {get;set;}
public bool Doeswork {get;set;}
}
}
Simdi bu modelleme işini halletiğimize göre sırada controllerları oluşturmak var. Controllers diye yeni bir dosya oluşturuyorum ardından bu klasörün içerisine PersonController.cs isminde bir dosya oluşturuyorum.
C#:
namespace WEBAPI.Controllers
{
public class PersonControllers
{
}
}
C#:
using System.Threading.Tasks;
using WEBAPI.Models;
using Microsoft.AspNetCore.Mvc;
namespace WEBAPI.Controllers
{
[ApiController]
[Route("[controller]")]
public class PersonController : ControllerBase
{
}
}
C#:
using Microsoft.EntityFrameworkCore;
using System.Diagnostics.CodeAnalysis;
namespace WebAPI.Models
{
public class PersonContext : DbContext
{
public PersonContext(DbContextOptions<PersonContext> options)
: base(options)
{
}
public DbSet<Person> PersonContextItems { get; set; } = null!;
}
}
Simdi bu Context'i program.cs dosyasına dagil ediyoruz. Ve dosyada bir kaç değisiklik yapmak durumundayız. Bu değisiklikler,
Controllerları eklemek, yazılımın bir APİ olduğunu beli etmek ve son olarakta database'i tanıtmak olucaktır.
C#:
using Microsoft.EntityFrameworkCore;[/COLOR][/B][/SIZE]
[COLOR=rgb(255, 255, 255)][SIZE=5][B]using WebAPI.Models;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
var app = builder.Build();
builder.Services.AddDbContext<PersonContext>(opt =>
opt.UseInMemoryDatabase("PersonList"));
if (app.Environment.IsDevelopment())
{
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
[/B][/SIZE][/COLOR]
[SIZE=5][B][COLOR=rgb(255, 255, 255)]app.Run();
Bu işlemlerden sonra tekrardan Controllerlara dönelim. Temel olarak buraya Context'imizi bağlıyalım bunun için ise,
C#:
private readonly PersonContext _context;
public PersonController(PersonContext context)
{
_context = context;
}
C#:
[HttpGet("{id}")]
public async Task<IActionResult> GetUserAsync(int userId)
{
return Ok(await _context.GetUserPublicAsync(userId));
}
Bugünlük konum bu kadar umarım beğenmişsinizdir iyi günler dilerim sağlıcakla kalın.