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
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) {
|
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
<b> Versiyon = v0.0.1</b> <br /><br /> <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> |
9.ADIM : doğrudan swagger linki açılması için bunu yaz -> App_Start-> RouteConfig.cs
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
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();
| örn : [Route("Controllerismi/getKategoriler12")] public object getKategoriler1() { |
13.ADIM : örnek metot burada class ilede dönebilirsin
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
|
|
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
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)]
[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