AspNet WebApi

xenceri

Uzman üye
16 Ağu 2010
1,948
0
İstanbul
Merhabalar arkadaşlar şöyle bir sorum olacaktı. Şu an bir servis projem var ve Servis içinde bir Get metodum var. Bu metodu şu şekilde tanımladım.

Kod:
        public List<T> Get<T>() where T : class
        {
            using (DBContext context = new DBContext())
            {
                return context.Set<T>().ToList();
            }
        }

Bu sayede DBden bir tablo çekeceğim zaman bu tabloya ait class'ı T yerine yazmam yeterli oluyor.
Örneğin; Get<Uyeler>(); şeklinde bir kod bana geriye List<Uyeler> türünde bir nesne listesi döndürecektir. Sorum ise şu, buna sitemde ya da yapacağım bir mobil uygulamada HttpClient ile nasıl ulaşabilirim? Normalde T'yi tanımlamasaydım http://localhost:51991/api/service/Get linki ile bu metodu çağırabilirdim ama yukarıdaki formatta bir metodu HttpClient ile nasıl çağırabiliriz bir fikri olan var mı acaba?
 

ihan3t

Kadim Üye
7 Şub 2012
5,018
23
Merhabalar arkadaşlar şöyle bir sorum olacaktı. Şu an bir servis projem var ve Servis içinde bir Get metodum var. Bu metodu şu şekilde tanımladım.

Kod:
        public List<T> Get<T>() where T : class
        {
            using (DBContext context = new DBContext())
            {
                return context.Set<T>().ToList();
            }
        }

Bu sayede DBden bir tablo çekeceğim zaman bu tabloya ait class'ı T yerine yazmam yeterli oluyor.
Örneğin; Get<Uyeler>(); şeklinde bir kod bana geriye List<Uyeler> türünde bir nesne listesi döndürecektir. Sorum ise şu, buna sitemde ya da yapacağım bir mobil uygulamada HttpClient ile nasıl ulaşabilirim? Normalde T'yi tanımlamasaydım http://localhost:51991/api/service/Get linki ile bu metodu çağırabilirdim ama yukarıdaki formatta bir metodu HttpClient ile nasıl çağırabiliriz bir fikri olan var mı acaba?

Servis katmanını genericleştirmemelisin. Yapısal olarak hatalı zaten bu yaptığın.

Controllerında api/users/ şeklinde bir endpointin olur.

[RoutePrefix("api/users")]
Controller
[HttpGet("{id}")]
public IHttpResponse Get(int id){
return userService.Get(id);
}


şeklinde bir yapıya gitmelisin. Service katmanında ise repository veya dbcontext ten _dbSet = context.Set<T>() dedikten sonra get metodunda db işlemini yapmalısın.

Ayrıca DbContext i using içerisine almak aşırı yanlış bir kullanım. Kesinlike öyle yapma. Tamamen aykırı.

Hatta DbContexti Servisleri vs vs inject etmek için bir IoC contaioner kullan. Dependency Injection nedir diye araştır. N-tier mimari nedir araştır. Restful mimarisi nedir araştır.

Yanlış yapılarda kod yazarsan bu senin üzerina yapışır ve iş hayatına girmekte, girdikten sonra tutunmaktan çok zorluk yaşarsın.

dipnot : ayrıca List<T> olarak değil IEnumerable<T> veya IQuerable<T> olarak döndürmeni tavsiye ederim.

Tekrar söylüyorum, lütfen n-tier mimarisini, dependency injectionı, solid prensiplerini öğrenin. Bu tarz işlemler interfaceler üzerinden inject ederek katmanlara bölerek yapılır.
 
Son düzenleme:
Ü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.