Quantcast
Channel: ÇözümPark
Viewing all articles
Browse latest Browse all 4130

ASP.NET Core Web Api – Arama

$
0
0

Merhabalar, bu yazıda ASP.NET Core ile web api’de arama nasıl yapılır bunu öğreneceğiz.

Yani bizim apimize bir istek de bulunulduğunda bu istekte ki arama kelimesine göre sonuçlar döndermeye çalışacağız. Örnek olarak;

https://localhost:5001/api/owners?name=Ali UYSAL

Bu tarz bir istekte bizim tek bir sonuç döndermemiz gerekiyor “Ali UYSAL”

OwnerParametersarama sorgunuzu bir sorgu parametresi olarak göndereceğimizden önce sınıfımızı oluşturacağız.

public class OwnerParameters : QueryStringParameters
{
	public uint MinYearOfBirth { get; set; }
	public uint MaxYearOfBirth { get; set; } = (uint)DateTime.Now.Year;
 
	public bool ValidYearRange => MaxYearOfBirth > MinYearOfBirth;
 
	public string Name { get; set; }
}

Burada Name değişkenini oluşturduk, diğer minYearsOfBirth ve MaxYearsOfBirth daha sonraki makaleler de ele alacağımız filtreleme ve sayfalama işlemlerinde kullanacağımız için şimdilik göz ardı edebilirsiniz.

Yapmamız gereken bir sonraki şey, OwnerRepositoryadında ki class’ımız da arama işlevselliğini uygulamak :

public PagedList<Owner> GetOwners(OwnerParameters ownerParameters)
{
	var owners = FindByCondition(o => o.DateOfBirth.Year >= ownerParameters.MinYearOfBirth &&
								o.DateOfBirth.Year <= ownerParameters.MaxYearOfBirth);
 
	SearchByName(ref owners, ownerParameters.Name);
 
	return PagedList<Owner>.ToPagedList(owners.ToList().OrderBy(on => on.Name),
		ownerParameters.PageNumber,
		ownerParameters.PageSize);
}
 
private void SearchByName(ref IQueryable<Owner> owners, string ownerName)
{
	if (!owners.Any() || string.IsNullOrWhiteSpace(ownerName))
		return;
 
	owners = owners.Where(o => o.Name.ToLower().Contains(ownerName.Trim().ToLower()));
}

Öncelikle,IsNullOrWhiteSpaceüzerinde basit bir kontrol yaparak name parametresinin gerçekten gönderilip gönderilmediğini kontrol etmemiz gerekir Name eğer api isteğinde gönderilmemiş ise, bir şey aramanın bir anlamı yok.

Daha sonra, Namedizgenin yan tümcesini kullanıyoruz. Yine burada filtreleme ile ilgili kodlarda mevcut, bizi ilgilendiren kısım;

private void SearchByName(ref IQueryable<Owner> owners, string ownerName)
{
	if (!owners.Any() || string.IsNullOrWhiteSpace(ownerName))
		return;
 
	owners = owners.Where(o => o.Name.ToLower().Contains(ownerName.Trim().ToLower()));
}

Geri kalan her şey aynı.

Uygulamamız da arama kodları sadece bu kadar. Gördüğünüz gibi gerçekten basit ve çok az kod ile Api’mize arama ekleyebildik.

Şimdi Postman tarzı bir uygulama ile apimizde arama yapmak için istek de bulunduğumuz da;

https://localhost:5001/api/owners?name=Ali UYSAL

Sonuç;

tam ad girdiğimiz için tek sonuç geldi, biz içerisinde o geçenleri listelemeye çalışırsak bu durumda benim veritabanımda ki bilgilere göre 3 kayıt gelmeli.

https://localhost:5001/api/owner?name=o
[
  {
    "id": "261e1685-cf26-494c-b17c-3546e65f5620",
    "name": "Ahmet Barbaros",
    "dateOfBirth": "1974-11-14T00:00:00",
    "address": "Teşvikiye"
  },
  {
    "id": "24fd81f8-d58a-4bcc-9f35-dc6cd5641906",
    "name": "Oya Aydoğan",
    "dateOfBirth": "1980-12-05T00:00:00",
    "address": "Teşvikiye"
  },
  {
    "id": "66774006-2371-4d5b-8518-2177bcf3f73e",
    "name": "Hakan Somun",
    "dateOfBirth": "1998-12-15T00:00:00",
    "address": "Teşvikiye"
  }
]

The post ASP.NET Core Web Api – Arama appeared first on ÇözümPark.


Viewing all articles
Browse latest Browse all 4130

Trending Articles


Mide ağrısı için


Alessandra Torre - Karanlık Yalanlar


Şekilli süslü hazır floodlar


Flatcast Güneş ve Ay Flood Şekilleri


Gone Are the Days (2018) (ENG) (1080p)


Yildiz yükseltme


yc82


!!!!!!!!!! Amın !!!!!!!!!


Celp At Nalı (Sahih Tılsım)


SCCM 2012 Client Installation issue