🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / .Net Core Web Api / .Net 6 Core Web Api Basit Kullanımı 2

1-) .Net 6 Core Web Api  - .Net 6 Core Web Api Basit Kullanımı 2

 

net core 9 için swagger eklemek

 

Install-Package Swashbuckle.AspNetCore.Swagger

Install-Package Swashbuckle.AspNetCore.SwaggerGen

Install-Package Swashbuckle.AspNetCore.SwaggerUI

 

 

 

kaynak kodlar : https://github.com/ramazanhaber/NetCoreApiEgitim2

diger kaynak : https://jasonwatmore.com/net-7-dapper-postgresql-crud-api-tutorial-in-aspnet-core

 

SQL BAĞLANTI HATASI ALIRSAN BUNU ÇALIŞTIR

 private void EnsureConnectionOpen()

 {

     if (context.State == ConnectionState.Closed)

     {

         context.Open();

     }

 }

 

1. ADIM

2.ADIM

3.ADIM

 

4.ADIM TERMİNALE(PACKAGE MANAGER CONSOLE) YAZ VE ÇALIŞTIR

 

Install-Package Microsoft.EntityFrameworkCore

Install-Package Microsoft.EntityFrameworkCore.Tools

Install-Package Microsoft.EntityFrameworkCore.SqlServer

Install-Package Newtonsoft.Json

 

 

Install-Package Microsoft.EntityFrameworkCore -Version 7.0.1

Install-Package Microsoft.EntityFrameworkCore.Tools -Version 7.0.1

Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 7.0.1

Install-Package Newtonsoft.Json -Version 13.0.3

 

 

5.ADIM(Models diye klasör oluştur içine Kategoriler.cs oluştur ve aşağıdakini yaz)

using System.ComponentModel.DataAnnotations;

 

namespace NetCoreApiEgitim1.Models

{

    public class Kategoriler

    {

        [Key]

        public int id { get; set; }

        public string? ad { get; set; }

        public bool? aktif { get; set; }

    }

}

 

 

6.ADIM(Entities diye klasör oluştur içine Context.cs oluştur ve aşağıdakini yaz)

 

using Microsoft.EntityFrameworkCore;

using NetCoreApiEgitim1.Models;

 

namespace NetCoreApiEgitim1.Entities

{

    public class Context : DbContext

    {

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

        {

            optionsBuilder.UseSqlServer("Data Source=RAMBO3;Initial Catalog=Deneme;User ID=sa;Password=şifre;TrustServerCertificate=True");

        }

        public DbSet<Kategoriler> Kategoriler { get; set; }

 

    }

}

 

 

7.ADIM -> Program.cs yi komple aşağıdaki kodu yapıştır

 

var builder = WebApplication.CreateBuilder(args);

 

// Add services to the container.

builder.Services.AddCors();

builder.Services.AddControllers();

// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle

builder.Services.AddEndpointsApiExplorer();

builder.Services.AddSwaggerGen();

 

builder.Services.AddDbContext<Context>();// veri tabanı bağlantı yeri

var app = builder.Build();

 

 

//app.UseCors(builder => builder

//.AllowAnyHeader()

//.AllowAnyMethod()

//.SetIsOriginAllowed((host) => true)

//.AllowCredentials()

//);

 

app.UseCors(builder => builder

.AllowAnyHeader()

.AllowAnyMethod()

.AllowAnyOrigin()

.SetPreflightMaxAge(TimeSpan.FromDays(10))

);

 

if (app.Environment.IsDevelopment() || app.Environment.IsProduction())

{

    app.UseDeveloperExceptionPage();

    app.UseSwagger();

    app.UseSwaggerUI(c => {

        c.SwaggerEndpoint("/swagger/v1/swagger.json", "myapi v1");

    });

}

 

app.UseHttpsRedirection();

 

app.UseAuthorization();

 

app.MapControllers();

 

app.Run();

 

 

8.ADIM

 

 

 

 

 

 

 

9.ADIM(EKLE SİL GÜNCELLE LİSTELE)

 

using Microsoft.AspNetCore.Http;

using Microsoft.AspNetCore.Mvc;

using Microsoft.Data.SqlClient;

using Microsoft.EntityFrameworkCore;

using NetCoreApiEgitim1.Entities;

using NetCoreApiEgitim1.Models;

using Newtonsoft.Json;

using System.Data;

namespace NetCoreApiEgitim1.Controllers

{

    [Route("api/[controller]")]

    [ApiController]

    public class KategorilerController : ControllerBase

    {

        [HttpGet]

        [Route("getKategoriler")]

        public IActionResult getKategoriler()

        {

            using var context= new Context();

            var values = context.Kategoriler.ToList();

            return Ok(values);

        }

 

 

        [HttpPost]

        [Route("addKategoriler")]

        public IActionResult addKategoriler(Kategoriler kategori)

        {

            using var context= new Context();

            context.Add(kategori);

            context.SaveChanges();

            return Ok();

        }

 

 

        [HttpPost]

        [Route("updateKategoriler")]

        public IActionResult updateKategoriler(Kategoriler kategori)

        {

            using var context= new Context();

            context.Update(kategori);

            context.SaveChanges();

            return Ok();

        }

 

 

        [HttpPost]

        [Route("deleteKategoriler")]

        public IActionResult deleteKategoriler(int id)

        {

            using var context= new Context();

            Kategoriler kategoriler = new Kategoriler();

            kategoriler.id = id;

            context.Remove(kategoriler);

            context.SaveChanges();

            return Ok();

        }

 

 

        [HttpGet]

        [Route("getKategorilerJoin")]

        public IActionResult getKategorilerJoin()

        {

            using var context= new Context();

            string query = @"select Kategoriler.ad,kategoriId,Urunler.ad,Urunler.id as urunId from Urunler

left join Kategoriler on Kategoriler.id=Urunler.kategoriId";

 

            var data = getQueryToDataTable(query, context);

 

            string json = JsonConvert.SerializeObject(data);

 

            return Ok(json);

        }

 

 

        [ApiExplorerSettings(IgnoreApi = true)]

        [NonAction]

        public DataTable getQueryToDataTable(string query, DbContext context)

        {

            DataTable dt = new DataTable();

            try

            {

                using (var cmd = context.Database.GetDbConnection().CreateCommand())

                {

                    cmd.CommandType = System.Data.CommandType.Text;

                    cmd.CommandText = query;

                    SqlDataAdapter da = new SqlDataAdapter((SqlCommand)cmd);

                    da.Fill(dt);

                }

            }

            catch (Exception ex)

            {

            }

            return dt;

        }

 

 

    }

}

 

 

10.ADIM -> SQL'İ appsettings.json dan okuma

 

                   1. appsettings.json (ConnectionStrings eklenir)

 

{

  "Logging": {

    "LogLevel": {

      "Default": "Information",

      "Microsoft.AspNetCore": "Warning"

    }

  },

  "AllowedHosts": "*",

 

  "ConnectionStrings": {

    "con1": "Data Source=RAMBO3;Initial Catalog=POSDB;User ID=sa;Password=123;TrustServerCertificate=True;MultipleActiveResultSets=True;"

  }

}

 

 

                2. Context.cs

 

using Microsoft.EntityFrameworkCore;

using NetCoreApiEgitim2.Models;

 

namespace NetCoreApiEgitim2.Entities

{

    public class Context : DbContext

    {

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

        {

            IConfigurationRoot configuration = new ConfigurationBuilder()

            .SetBasePath(AppDomain.CurrentDomain.BaseDirectory)

            .AddJsonFile("appsettings.json")

            .Build();

 

            string? con1 = configuration.GetConnectionString("con1");

 

            optionsBuilder.UseSqlServer(con1);        }

        public DbSet<Kategoriler> Kategoriler { get; set; }

 

    }}

 

 

11.ADIM (App setting den farklı şekilde connection string okumak için)

 

Context.cs

public class Context : DbContext

        {

            public Context(DbContextOptions<Context> opt) : base(opt)

            {}}

 

 

program.cs

 builder.Services.AddDbContext<Context>(opt =>

                {

                    opt.UseSqlServer(builder.Configuration.GetConnectionString("Local"));

                });

 

appsetting.json

 

  {

                    "ConnectionStrings": { "Local": "Server=OZO;Database=ModulApp;Uid=sa;Pwd=1;" },

  "Logging": {

 

 

12.ADIM

 

SON OLARAK İİS KURULUMU .NET 6

 

 BURADAN İNDİR

https://drive.google.com/file/d/1HH3dfMpVXy3voW88cEUznRmKM-JJMV0I/view?usp=sharing

 

VEYA BURADAN İNDİR

 

 

https://dotnet.microsoft.com/en-us/download/dotnet/6.0

 

 

 

 

 

MOBİLEDEN ULAŞIP TEST İÇİN KULLANMAK İÇİN conveyer olarak extension yükle

 

 

projende debug yapmak için : https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti

kaynak : https://www.youtube.com/watch?v=9ixt9bdAHs8&ab_channel=Asfendyar

 

 

 

 

 

 

 

 

AYRICA BAKINIZ iis swagger getirme kaynak

https://stackoverflow.com/questions/62397386/swagger-ui-not-displaying-when-deploying-api-on-iis

 

13.ADIM

 

 

13.ADIM -> ÖNEMLİ ->    api core double'lar nokta olur

 

 

 

    var app = builder.Build();

 

    var supportedCultures = new[] { "en-GB", "fr", "de" };

    var localizationOptions = new RequestLocalizationOptions()

        .SetDefaultCulture(supportedCultures[0])

        .AddSupportedCultures(supportedCultures)

        .AddSupportedUICultures(supportedCultures);

    app.UseRequestLocalization(localizationOptions);

 

 

 

 

**************** MYSQL İÇİN BAĞLANTISI *****************

 

proje linki :  https://drive.google.com/file/d/17WgBMC2Y5zBqV3f-KlEV9zXksFq_lABI/view?usp=sharing

github linki : https://github.com/ramazanhaber/NetCore_6.0_MysqlApi

 

 

 

Install-Package Pomelo.EntityFrameworkCore.MySql -Version 7.0.0

Install-Package Microsoft.EntityFrameworkCore -Version 7.0.1

Install-Package Microsoft.EntityFrameworkCore.Tools -Version 7.0.1

Install-Package Newtonsoft.Json -Version 13.0.3

 

 

1- Context.cs düzeltilir

 

using Microsoft.EntityFrameworkCore;

using MysqlApi.Models;

 

namespace MysqlApi.Entities

{

    public class Context : DbContext

    {

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

        {

            string connectionString = "server=localhost;port=3306;database=uzaktan_aydinlatma;user=root;password=sapass;";

            optionsBuilder.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString));

        }

        public DbSet<tbl_log> tbl_log { get; set; }

    }

}

 

 

2- YeniController.cs

using Microsoft.AspNetCore.Mvc;

using Microsoft.EntityFrameworkCore;

using MysqlApi.Entities;

using MysqlApi.Models;

using MySqlConnector;

using Newtonsoft.Json;

using System.Data;

 

namespace MysqlApi.Controllers

{

    [Route("api/[controller]")]

    [ApiController]

    public class YeniController : ControllerBase

    {

        [HttpGet]

        [Route("getKategoriler")]

        public IActionResult getKategoriler()

        {

            using var context = new Context();

            var values = context.tbl_log.ToList();

            return Ok(values);

        }

 

 

        [HttpPost]

        [Route("PostKategoriler")]

        public IActionResult PostKategoriler(tbl_log log)

        {

            using var context = new Context();

            var values = context.tbl_log.Add(log);

            context.SaveChanges();

            return Ok(log);

        }

 

 

        [HttpPut]

        [Route("PutKategoriler")]

        public IActionResult PutKategoriler(int id)

        {

            using var context = new Context();

            var values = context.tbl_log.Where(x=>x.id == id).ToList();

           // context.SaveChanges();

            return Ok(values);

        }

 

 

        [HttpGet]

        [Route("getKategoriler2")]

        public IActionResult getKategoriler2(int id)

        {

            using var context = new Context();

            var values = getQueryToDataTable("SELECT * FROM uzaktan_aydinlatma.tbl_log where id="+id+";", context);

            // context.SaveChanges();

            return Ok(JsonConvert.SerializeObject(values));

        }

 

 

        [ApiExplorerSettings(IgnoreApi = true)]

        [NonAction]

        public DataTable getQueryToDataTable(string query, DbContext context)

        {

            DataTable dt = new DataTable();

            try

            {

                using (var cmd = context.Database.GetDbConnection().CreateCommand())

                {

                    cmd.CommandType = System.Data.CommandType.Text;

                    cmd.CommandText = query;

                    MySqlDataAdapter da = new MySqlDataAdapter((MySqlCommand)cmd);

                    da.Fill(dt);

                }

            }

            catch (Exception ex)

            {

            }

            return dt;

        }

    }

}

 

 

3- tbl_log.cs

using System.ComponentModel.DataAnnotations;

 

namespace MysqlApi.Models

{

    public class tbl_log

    {

            [Key]

            public int id { get; set; }

            public int? kul_id { get; set; }

            public string? yapilan_islem { get; set; }

            public DateTime? tarih { get; set; }

    }

}

 

 

 

 

 2025 Nisan 15 Salı
 960