🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / C# Web Api MVC RMOS / .net rest web api mvc ve swagger kullanımı 2

1-) C# Web Api MVC RMOS - .net rest web api mvc ve swagger kullanımı 2

 

diğer kaynak bakmasanda olur : https://www.roketnot.com/not/1215-rest-web-api-mvc-ve-swagger

github link : https://github.com/ramazanhaber/.netswaggerapiveentity

 

1. ADIM

2. ADIM

3.ADIM

4.ADIM  : Install-Package Swashbuckle Package Manager Console yaz ve çalıştır

5.ADIM  : Install-Package Microsoft.AspNet.WebApi.Cors Package Manager Console yaz ve çalıştır

 

6.ADIM  : App_Start -> WebApiConfig.cs

public static class WebApiConfig

    {

        public static void Register(HttpConfiguration config)

        {

 

            config.EnableCors();

 

7.ADIM  : Controllers->ValuesController.cs kontrollerin üstüne bunu yaz [EnableCors("*", "*", "*")]

using System.Collections.Generic;

using System.Web.Http;

using System.Web.Http.Cors;

 

namespace apiegitim1.Controllers

{

    [EnableCors("*", "*", "*")]

    public class ValuesController : ApiController

    {

 

8.ADIM  : anasayfaya swagger api linkine gitmek için bu şekilde değiştir -> Views -> Home-> Index.cshtml

<div class="jumbotron">

 <h3>

        <b> Versiyon =  v0.0.1</b>

        <br /><br />

 </h3>

      <div >

        @Html.ActionLink("GUEST X SWAGGER API""Index""swagger/ui/index", routeValues: new { Area = "" }, htmlAttributes: new { id = "index", @class = "btn btn-primary btn-lg" })

    </div>

</div>

 

9.ADIM  : doğrudan swagger linki açılması için bunu yaz -> App_Start-> RouteConfig.cs

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

 

// aşağı kod anasayfayı swagger yapar

routes.MapHttpRoute(

name: "swagger_root",

routeTemplate: "",

defaults: null,

constraints: null,

handler: new RedirectHandler((message => message.RequestUri.ToString()), "swagger"));

 

10.ADIM  : yeni controller oluşturmak için aşağıdaki gibi seç sonunda Controller yazmak zorun örn :KategoriController

 

11.ADIM  : metot ismi ile istek yapmak için {action} ekle -> App_Start-> WebApiConfig.cs

config.Routes.MapHttpRoute(

                name: "DefaultApi",

               routeTemplate: "api/{controller}/{action}/{id}", // action metot ismi demek

                defaults: new { id = RouteParameter.Optional }

            );

 

12.ADIM  : el ile route vermek için config.MapHttpAttributeRoutes(); ekle -> App_Start-> WebApiConfig.cs

// Web API routes

config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(

 

örn :

[Route("Controllerismi/getKategoriler12")]

public object getKategoriler1()

{

 

13.ADIM  : örnek metot burada class ilede dönebilirsin

   [EnableCors("*", "*", "*")]

 

    public class KategoriController : ApiController

    {

        public object getKategoriler()

        {

            List<String> list = new List<String>() { "Yiyecekler", "İçecekler" };

            return list;

        }

 

** ENTİTY ADO NET KULLANIMI **

1.ADIM  : Entities diye klasör oluşturulur  ve new item denir

 

 

2.ADIM  : entity diye aratılır ve en üstteki seçilir

3.ADIM  : en baştaki seçilir

 

4.ADIM  :

 

 

 

 

 

5.ADIM  : ilk once server ismi yazılır sonra sql server aut seçilir sonra k.ad ve şifre girilir sonra veri tabanı seçilir

 

6.ADIM  : yes seçilir POSDBEntities ile context e erişicez

 

 

 

7.ADIM  : en üstteki seçilir

 

8.ADIM  : hangi tabloları eklemek istiyorsan seçiceksin

 

 

9.ADIM  : kategori listelemek için

 public class KategoriController : ApiController

    {

      public List<Kategoriler> listele()

        {

           POSDBEntities context = new POSDBEntities();

           var list = context.Kategoriler.ToList();

           return list;

        }

 

10.ADIM  : kategori kayedetmek için

        [HttpPost] // istek post türünde gelsin

        public bool kaydet(Kategoriler kategori)

        {

            try

            {

                POSDBEntities context = new POSDBEntities();

                context.Kategoriler.Add(kategori);

                context.SaveChanges(); // değişikliği uygula demek

            }

            catch (Exception ex)

            {

                return false;

            }

            return true;

        }

 

11.ADIM  : kategori silmek için

[HttpPost] // istek post türünde gelsin

        public bool sil(int kategoriId)

        {

            try

            {

                Kategoriler kategoriler=new Kategoriler();

                kategoriler.id = kategoriId;

 

                POSDBEntities context = new POSDBEntities();

                context.Kategoriler.Attach(kategoriler); // bunu yapmadan olmaz

                context.Kategoriler.Remove(kategoriler);

                context.SaveChanges();// değişikliği uygula demek

            }

            catch (Exception ex)

            {

                return false;

            }

            return true;

        }

 

12.ADIM  : kategori güncelle için

[HttpPost] // istek post türünde gelsin

        public bool guncelle(Kategoriler kategori)

        {

            try

            {

                using (var dbContext = new POSDBEntities())//using->belleği çıkınca temizlesin demek

                {

                    dbContext.Kategoriler.Attach(kategori);

                    dbContext.Entry(kategori).State = EntityState.Modified;

                    dbContext.SaveChanges();

                }

            }

            catch (Exception ex)

            {

                return false;

            }

            return true;

        }

 

14.ADIM  : query to datatable yani sql queryisini dinamik json olarak döndüren yapı diyebiliriz kısaca

 [ApiExplorerSettings(IgnoreApi = true)] // yazılan metot swaggerde gözükmesin demek

        public DataTable getQueryToDataTableNew(string query, DbContext context)

        {

            DataTable dt = new DataTable();

            try

            {

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

                {

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

                    cmd.CommandText = query;

                    cmd.CommandTimeout = 0;//sınırsız demek

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

                    da.Fill(dt);

                }

            }

            catch (Exception ex)

            {

                throw ex;

            }

 

            return dt;

        }

 

15.ADIM  : query to datatable ile örnek join döndürmek

 public object listeleJoin()

        {

            POSDBEntities context = new POSDBEntities();

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

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

            var list = getQueryToDataTableNew(query,context);

            return list;

        }

 

 

**DİĞER NOTLAR**

1- Metodun veya Controller'in SWAGER DE GÖZÜKMESİNİ İSTEMİYORSAN BUNU YAPARSIN [ApiExplorerSettings(IgnoreApi = true)]

ÖRNEK :

 

[ApiExplorerSettings(IgnoreApi = true)] // yazılan metot swaggerde gözükmesin demek

[Route("order/{remoteId}")]

public HttpResponseMessage order(){}

 

2- swagger linkine bu şekilde ulaşırsın

https://localhost:44381/swagger VEYA https://localhost:44381/swagger/ui/index

 2023 Mart 07 Salı
 349