Asp.Net Core Api Yapımı.

Nonantiy

Moderasyon Ekibi Lider Yardımcısı
28 Haz 2020
1,980
1,078
Kayseri
8BfzfS111434df5fdd155e.md.png

İ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.

0*SmNFyewmQWuwUTQH.png

API'ın temelerini atalım.
KhJDZS.gif

İlk başta terminalimize geliyoruz. Bir APİ templateti oluşturmak için yazmamız gereken komut çok ama çok basit.
Kod:
dotnet new webapi
unknown.png

Ardından benim bir paketi projeme dağil etmem gerekiyor bunun için ise
Kod:
dotnet add package Microsoft.EntityFrameworkCore.InMemory --prerelease
komudunu giriyorum.
unknown.png

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
kodunu terminale girin. Ardından projemizi izliyici olarak başlatalım. Bunun için ise
Kod:
dotnet watch run
komudunu girmemiz yeterli olucaktır.
unknown.png

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!;
    }
}
unknown.png

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();
unknown.png
Bu işlemlerden sonra,
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.
Kod:
dotnet new web
unknown.png

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;}
    }
}
unknown.png


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
    {

    }
}
Simdi bu dosyayı controller olarak kullanıcağız. Bu yüzden bir kaç kod girmemiz gerekiyor.
C#:
using System.Threading.Tasks;
using WEBAPI.Models;
using Microsoft.AspNetCore.Mvc;

namespace WEBAPI.Controllers
{

    [ApiController]
    [Route("[controller]")]
    public class PersonController : ControllerBase
    {

    }
}
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.
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!;
    }
}

unknown.png


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();
unknown.png

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

C#:
     [HttpGet("{id}")]
        public async Task<IActionResult> GetUserAsync(int userId)
        {
            return Ok(await _context.GetUserPublicAsync(userId));
        }
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.
jyo2qm.png
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.