#18- Asp.NET Core 6 + Angular İle Mini E-Ticaret | Custom HttpClient Servisi Oluşturmak
Вставка
- Опубліковано 9 кві 2022
- Github : github.com/gncyyldz
#aspnetcore6 #angular #eticaret #aspnetcoreuygulama #onionarchitecture #angular #angular13 #HttpClient
Bu video Gençay Yıldız tarafından NGAkademi bünyesinde ücretsiz çekilmiştir.
Gençay Yıldız'ın Bloğu
www.gencayyildiz.com/blog/
Güncel Duyuru ve Bildiriler İçin Sosyal Medya Hesaplarımız
/ ngakademi.sosyal
/ ngakademi
/ ngakademii
Bana destek olmak için kanalıma üye olabilirsiniz:
/ gençay yıldız
hasta hasta bir buçuk saat ders anlatmak ayrı bir başarı...emeğinize sağlık.
`/${{id}}` burada kullanılan, tek tırnak değil, backtick sembolü olup, eklemek için Alt Gr + , (ALT GR ile virgül tuşları) tuşlarına aynı anda basmanız gerekir. Beni çok uğraştırdı, başkası uğraşmasın.
Teşekkürler. İnce düşünmüşsün…emeğine sağlık
çok teşekkürler
Teşekkürler.
25.12.2022 izledim. Uygulamalı , hepsini denedim. Anladım, Elhamdülillah.. Teşekkürler Hocam..
Hocam emeğinize sağlık yine çok keyifli ve harika bir ders geçirdik :)
Hocam emeklerinize sağlık gerçekten harikasınız
Hele şükür yeterince uzun bir ders geldi. İyileşmiş olmalısınız Hocam gelmiş geçmiş olsun
Github için çok teşekkürler resim on numara
Hocam harika bir eğitim emekleriniz için teşekkür ederim çok şey öğreniyorum.
Elinize emeğinize sağlık hocam proje kendi açımdan çok öğretici ve geliştirici olarak ilerliyor devamını sabırsızlıkla bekliyoruz
Ellerinize sağlık hocam. Baştan sona dikkat kesilerek, aynılarını tekrar ederek, kendime sorarak, düşünerek izledim. Teşekkür ederim :)
Üstad emeğine sağlık, burs dersi 2 günce anca dinleyebildim, maşallahın var :)
Çok teşekkür ederim hocam. HttpClientService'teki metotlar çok güzel oldu. Öğrendiklerimi, sizinle pratiğe dökmek çok güzel bir bakış açısı sağlıyor, aklımın endazesi artıyor. İyi ki çekmişsiniz bu seriyi...
Elinize yüreğinize sağlık Gençay Bey. Sürekli griş seviyesi kalan kendini geliştirme sürecim sayenizde tam bir sistem yazmaya doğru gidiyor. Rabbim iki cihanda aziz eylesin
Kral, efsane bir dersti. Üstüne 1.5 saat daha olsa dinlerdim. Ama sorun yok hemen devamındaki videoya geçiyorum :)
Çok, çok teşekkürler.
Teşekkürler hocam...
Boşuna yazılım kursu aldığımı şuan bir kez daha anlıyorum. Teşekkürler hocam verdiğiniz değerli bilgiler için.
Teşekkürler hocam
Çok teşekkürler hocam
Teşekkür ederim... Hiç bilmeyen biri bile anlatımınızdan dolayı en azından yapılan işin mantığını kavrayabiliyor. Her eğitimde bu böylemidir bilmiyorum ama sizin eğitimlerinizde bu böyle bu da sizin Profesyonelliğinizden kaynaklanmaktadır. Saygılar
Bu bolum beni zorladi. Ben daha once Angular ile alakali dersler(Farkli kaynaklardan) izlemistim ama HttpClientService ile alakali bir ders yoktu. Bu derse kadar olanlari anlamstim ve guzel gidiyordu. Ben simdi Angular egitim serisine baslayip, HttpClient egitimlerini de tamamlayip buraya tekrar geri donme karari aldim. Umarim dogru yapiyorumdur. Angular egitimini bu seri bittikten sonra tamamlarim artik.
Yok böyle bızıklama :D kafalar duman oldu bende farklı bi hata vardı kendimden kaynaklı :D çözdük şükür .
biraz geç izliyorum ama çok güzel bir kurs hocam
Siz mükemmel bir detaysınız 😇
Detaymı?, Konun Kendisi o ya :)
Hocam elinize sağlık
elinize sağlık
6:06 Anladım. Dersler çok güzel gidiyor. Önceden öğrendiğim şeylerin üstüne ekliyoruz. Bildiğim şeylerin daha iyisini yapıyoruz. Ve ayrıca SignalR için sabırsızlanıyorum. Sanırım siz anlatmadan önce bi' projem için deneme yapacağım.
Hocam tesekkurler
19:23 Ben de bunu tercih ediyor olacağım. Bayramda bayağı bi' ders yüklediniz. Tembelliği bırakıp çalışma vakti geldi :D
Türkçe klavyeli macbook kullanıyorsanız option ve virgül tuşlarına aynı anda basarak backtick yapabilirsiniz.
Hocam çok teşekkürler, elinize sağlık. Cacheleme mekanizmasıyla ilgili başlangıç seviyesinde dahi olsa bir çalışma da olacak mı acaba? ( Redis gibi mesela... )
hocam henuz bu videoya gecmedim ama yuklemissiniz begenmeden gecmek olmaz
Yola devam...
💯💯💯💯💯
thanks
Hocam bilgileriniz zihnimizi aydınlatıyor. Birazcık gözümüz aydınlık görsün koyar mı ...
Çok güzel gidiyor. Bu seri bittikten sonra aynı proje üzerinden Angular ile değil de MVC ile yapmak isteseydik (API üzerinden tüketecek şekilde) nasıl yapardık, yapıları nasıl oluşturmamız gerekirdi diye bir anlatımınız olur mu? Bunu yazarken bile kaç kez yazdım sildim ve sıkılarak yazdım açıkçası 😑 Çok uzun bir seri olmaz diye tahmin ediyorum. Zaten ilgili proje üzerinden devam edilecek eğer tarafınızdan uygun görülürse tabi🙏
Tamamdır, bu konuda yorumda bulunuruz. 👍
@ Teşekkürler hocam🙏
Post,put,delete işlemleri database yansımasına rağmen 500 error kodu döndürüyordu çözüm bulamadım bi türlü.Yorumlardaki diğer arkadaşlarda bulamamamış ben de bulamadım. Database'e yansıdıktan sonra sayfayı yenileyince hop 500 error kodu.
Merhaba hocam, sizi geç keşfettim ama geç olsun güç olmasın :)
Sorum contract ile alakalı olacaktı. Contractları interface ile yapabilir miyiz daha önce interface kullanıldığını görmüştüm. Yapılıyorsa ikisi arasındaki fark nedir?
Hocam 1.01.36 'da bahsettiğiniz T body kısmına verilen objeyi değil dönüşte gelen objeyi temsil ediyor. O yüzden orada body kısmında any yazmaya devam ediyor. post yazmanız body'nin tipini bağlamıyor. Ayrıca ellerinize sağlık.
Evet, orada eksiğimiz olmuş. Teşekkürler.
Gencay Hocam Ağzınıza emeğinize sağlık. Sahuru ettirdiniz bana :) Bir şey dikkatimi çekti Muhtemelen sonradan düzelterek devam edeceksiniz ama Repository interfaceleri oluştururken Write ve Read diye ayırıp ola ki okumaları farklı bir DB üzerinden yaparız diye de not düşmüştünüz. Şimdi ise Update işlemini IReadProductRepository üzerinden yaptınız bu eğer bu şekilde devam edecek ise ilerde sorun olacak mı ?
Çok güzel bir noktayı yakaladınız. Evet, eğer ki ileride read ve write olarak dbleri ayırırsak kesinlikle sıkıntı yaratacaktır. Zaten ileride bu işe gitişirsek read ve write repositorylerin ona göre modifiye edilmeleri gerekecektir.
Sevgiler.
Hocam merhaba. 20:24. dakikada VM_Update_Product modelimizin içine name,stock ve price değerlerini tekrar yazmak yerine Vm_Create_Product ile veya base bir interface oluşturup bu interface ile implement etsek olmaz mı?
Hocam api tarafı da client tarafı da sizin github hesabınızdan kopyaladığımda bile, put işleminde işlem gerçekleşiyor db güncelleniyor ama chrome network tarafında 500 atıyor, sebebi ne olabilir?
1:30:50 Biz teşekkür ederiz.
Merhaba hocam, egitimleriniz için teşekkür ederim http post metodlarında geri dönüş tipi nasıl oluyor ?
Hocam bu kadar abstraction gidmek ne kadar duzgun ola bilir? Yarin bir gun musteri isder ki mesala Customers-ler olmasin biz o zaman elle yazdimiz butun customersleri bir bir bulubda silmliyiz benim shasi fikrimze bir isi ne tam abstarktion kimi yapmayi dusunme nede ki concret gibi dusunmek olur balanslasdirmak en iyisi olmazmi? ben bu custom httpcilen servisinde daha cok abstarction-lasdirmak isdeyi ile yapildini dusunuyorum : D
Değerli hocam Partial in mvc deki karşılığ var mıdır? varsa nedir? bu konu ile ilgili bilgilendirebilir misiniz?
Teşekkürler.
Hocam string interpolation kullanirken ${..} icerigi normal string olarak algiliyor VS code (hicbir oneri cikmiyor kod yazarken, renkde de degisiklik yok). Bir eklenti yuklemem gerekiyor mu, ve ya atladigim bir yer mi var bilemedim.
Hocam bayram günü Hepsiburada veya Trendyol gibi bir şey çıkacak gibi duruyor. Artık mini değilim diyor uygulama :)
Hocam merhaba. visual studio code projesinde yardımcı uygulama olarak neler kullanıyorsunuz? teşekkürler.
Hocam bu controller değerlerini backendle parelel olarak bir enumun içine almak mantıklı mı?
Merhaba Gencay Hocam; admin components altdıkaki klasörlerde yer alan component.ts dosyalarında işlem yapamıyor ui çalışıyor adminde çalışmıyor showSpinner denedim sonra get post put update delete ve console.log() denedim ancak hiç birine cevap vermedi.
Hocam saygılar savgiler 😃
Post işleminde SaveAsync kullandığım zaman " Non-exhaustive switch expression failed to match its input. Unmatched value was Unchanged. " hatasını alıyorum. Bu hatayı daha önce ki örneklerde de almıştım. SaveAsync yerine update kullandığım zaman bir sorun yok. Nerede hata yapmış olabilirim.
hocam merhaba. mvc ile çalıştığımızda bu servisi nasıl yazabiliriz?
hocam post yapıp (body:Partial):Observable olarak yapılabilir diye düşündüm, çünkü diğer türlü geleni de gönderdiğimiz gibi beklemiş olmuyor muyuz?
Katılıyorum. Şuna üşendiğimiz için as operatörü ile idare ediyoruz 🙃
Değerli hocam kanalınızdaki OOP, C#, ASP NET Core 5 serilerini takip ettim. Öncelikle bu eğitimleri ücretisiz bir şekilde sunduğunuz için teşekkürler. Allah sizden razı olsun çok şey öğrendim. Sorum konu dışında biraz fakat, biz bu uygulamayı güzel bir şekilde backend' de .NET 6 ile geliştiriyoruz. Sorum şu: Sektörde iş bulabilmek için (backend özelinde soruyorum), .NET Core yeterli mi? Daha doğrusu .NET MVC bilmek gerekli mi? .NET MVC de zorlanıyorum. MVC bilmeden de olur mu? Cevabınız için şimdiden teşekkürler.
Hala MVC kullanan firmalar var hatta köklü firmaların geneli öyle. Çünkü olar için yazılım altyapısını değiştirmek ağır bir yük. MVC ya da katmanlı mimari ya da onion architecture mimarisini bilmek yani herhangi birinden birini bilmek zaten diğerlerini de anlamak gibi birşey oluyor. Yani sorun olacağını sanmıyorum :)
@@eyupkahraman3886 Selam Eyüp, aslında MVC'den kastım , .cshtml'ler yani frontend ile ilgili kısımlar daha çok. Ama backend ile de beraber olduğu için bu soruyu sormuştum, onlarda zorlanıyorum. O yüzden o şekilde belirtmiştim, yani frontend kısımları olmadan sade backend olarak .Net Core yeterli mi gibisinden.
@@softwaredev5459 Yani genelde frontend kısmını çalışılan projedeki frontendci arkadaşlar yapıyo. Sadece bilmekte fayda var diyebiliriz. Kendimden örnek vermem gerekirse ben şuan bu projeyi frontend'siz şekilde uyguluyorum. Bende aynı Gençay hocam gibi boğuluyorum çünkü front kısmında. Ama ilerleyen zamanlarda illaki angular ya da react öğrenmeyi planlıyorum. Buradan şuna varacağım illaki front kısmını bilmek zorunda değilsin zaten onun için frontend'ciler var. İlerleyen zamanlarda illaki kendine katacaksındır.
@@eyupkahraman3886 Anladım cevaplarin için çok teşekkürler. Haklısın ilerleyen zamanlarda front end kısmı için hiç olmazsa bile az da olsa öğrenilir(İsteğe bağlı). Ben hiç tecrübem olmadığı için sormuştum :) Tekrardan teşekkürler cevapların için.
En iyisi kırmızı. Kırmızı üstüne beyaz.
A’dan Z’ye Asp.NET Core 5.0 Web Programlama Eğitimi serisinde 22. konusu olan "VIEWMODEL & DTO" konusunda belirtilen ViewModel ve DTO nesneleri için bu uygulamada da muhtemelen değineceksiniz. Özellikle şu DTO nesnesidir bu VM nesnesidir şekliden bir vurgulamanız olabilir mi? Halen ikisinin arasındaki farkı algılayamadım. Yani ikisi birbirinin yerine mi kullanılıyor (tabi özelliklerine göre) yoksa Entity->DTO->ViewModel şeklinde bir durum mu var.
Burada contratcts mantığını anlatırken yukarıda bahsetmiş olduğum konuda da bu şekilde (contratcts mantığı şeklinde) bir yaklaşımın doğru olacağından bahsetmiştiniz. Ama dediğim gibi DTO ve ViewModel'i kanlı canlı görmeden algılayamadım. O konuda ViewModel'i çok geniş bir şekilde anlattınız ama DTO ile ilgili kod anlamında bir karşılaştırma olmayınca neyin ne olduğu konusunda bir algı oluşmadı.
Teşekkürler🙏
ViewModel in, DTO dan farki icerisinde birden fazla entity,property ve metod olmasidir. Dto da ise sadece ilgili entity e ait istenilen propertyler yer almaktadir. Mesala elimiz de products ve customers entityleri olsun.
ProductDto{
public string Name {get;set;}
public float Preis{get;set;}
}
CustomerDto{
public string Name {get;set;}
public string Address{get;set;}
}
VM_CustomerProducts{
public ProductDto {get;set;}
public CustomerDto {get;set;}
public float SatisFiyat {get;set;}
public SatisFiyati(){
satisFiyat= Preis * 1.10;
}
}
seklinde olabilir. Görüldügü üzere view modelde daha fazla property ve metot olmasinin yaninda birden fazla dto da icerisinde barindirabilir. Bana göre ViewModelin kapsami daha genis. Bu suna benzeyebilir. IEnumerable > ICollection > IList gibi. Kapsayicilik durumlari degisiklik gösteriyor.
@@fatihdeniz3702 Çok teşekkürler hocam. Daha açıklayıcı oldu. Bu konu ile ilgili 38. dersin altında da bir yorumda bulunmuştum. Bir kısmına cevap verdi hocamız. Ben de şöyle bir ifade kullanmıştım "DTO nesneleri kullanıcılar ile etkileşime girmezken iken View Model nesneleri kullanıcılar ile etkileşime giren nesneler diyebiliriz" bu ifade yanlış olmaz gibime geldi, belki de geliştirilebilir. Kendime bu şekilde bir slogan oluşturdum.🤗
@@anonim8680 Bir nevi dediğin gibi yapılabilir ancak yazılım geliştirmede daha çok agresif bir yaklaşım izlenerek entity ler dış dünyaya olabildiğince kapatılır/izole edilirler. Ancak yapılamaz denmez. Bu sadece geliştiricilerin en küçük güvenlik zafiyetlerini bile minimize etmek istemesinden kaynaklıdır. Bununda iki çaresi var dto ve view lerden geçer. Her ikiside içlerinde komplex tipler içerir.
Hocam dark mod kötü bu şekilde bende rahat ettim. Selamlarımla.
26:37
Hocam derslerin devamı ne zaman gelecek ara mı verdik?
Ara vermedik. Haftaya başlayacağım. Beklenmedik işlerim çıktı.
@ tamamdır hocam teşekkürler
cumleten merhaba. API'ye istek atip, get ve post isterken basta headers yok uyarisi veriyordu. endpointlerimi duzgun yazinca da ERR_CONNECTION_REFUSED hatasi aliyorum tarayicidan. CORS policies hatasi, headers statuscode 0 hatalari aliyorum. yorumlayabilecek olursa, cok sevinirim.
abi buldunmu bu hatayi? Bende ayni hatayi aliyorumda
Gencay muellim VScode'daki theme'nin ismi nedir ?? İştahami çok açdi bu oruclukda ^_^
Eve geçince bakıp söyleyeyim kardeşim 🙃
Sabırsızlıkla bekliyorum , VSCode'da denemediyim theme kalmadı .
İşlerken beynimin %100 nü kullandım diğer işlevlerimi hatırlamıyorum :D
Merhaba dolar işaretinden sonra gelen değişken ismini string olarak algılıyor tek tırnak ve köşeli parantez kullanmama rağmen. Küçük bir yeri kaçırıyorum yardımcı olabilen varsa sevinirim.
Zannımca dolar işaretinden önce tek tırnak / tick (') (shft + 2) işaretini kullandınız. Dolar işaretinden önce backtick (`) (alt gr + ,(virgül)) işaretini kullanmanız gerekmektedir. Bunun için klavyede (alt gr + ,(virgül)) dedikten sonra $ işaretine basınca çıkar.
@@anonim8680 teşekkürler hocam
post ve put metodlarında bad request (400) hatası alıyorum. get ve delete metodları çalışıyor. post ve put sizce neden bu hatayı verir? çözümü hakkında yardımcı olabilirseniz çok memnun olurum
Merhaba Hasan , VM_Create_Product tarafında id prop eklediysen eğer orayı silmeni ve tekrar denemeni öneririm , product component tarafında istek gönderdiğin zaman id nullable olamayacağı için patlıyor olabilir , aynı hata ile bende karşılaştım gözden model ayarlamasını yanlış yaptığımı farkettim.
apide frombody koy nesneyi düzgün alamıyordur belki
2 hafta uğraştım çözdüm. VM_Create_Product ile backendin kendi product nesnesini karıştırmışım. VM_CREATE_PRODUCT içerisinde name,stock,price olacak. Orders olmayacak,orders yazıp istekte bulununca client nullable olamaz hatası veriyor yani bana order döndür diyor fakat sen Vm_Create_Product içerisinde order tanımlamıyorsun bu yüzden hata veriyor. Order yazma vm_Create_product içerisine
post put ve delete işlemlerinde 500 hatasını alıyorum post işlemnde veri tabanına ilk başta ekliyor sonra hata dönüyor putta ve delete de herhangi bir işlem yapmıyor (browser üzerinden get yapınca put ve delete çalışmış gözüküyor ama veri tabanına yansımıyor).2 hata mesajında da subscirbe() kısmını gösteriyor .(angular 15 kullanıyorum)
çözüm bulabildiniz mi
@@gokhanyamac4239 yok hocam bulamadım veri tabanina bi şekilde işliyor ama nasil oluyor anlamadim.Genel mantigi anladigim icin diger derslere gectim bende
@@huseyinadiguzel2111 ayni sekilde degisiklikler veritabanina yansiyor fakat browserda hala 500 kodu olarak donuyor. Ben de gectim devam ediyorum.
33:53 de yapılan @inject("baseUrl") in bende altı çizili. Bu hatayı alıp da çözebilen varsa bi yardım edebilir mi?
i büyük olacak @Inject şeklinde
56:09 Ya bu Web Storm her şeyi kendisi yapıyor o yüzden farkına varamıyorum. İyi mi kötü mü anlamadım. :D
Delete işleminde Status 404 hatası alıyorum. Neyden kaynaklı olabilir ? Hocam siz veya baska gören olup cevaplarsa cok sevinirim. Burada tıkandım cunku.
Delete için nasıl bir endpoint'i tetikliyorsunuz?
@ this.httpClientService.delete({
controller: "products"
}, "af131e47-d8d8-4038-ba9c-7ee339f504f4")
.subscribe();
şu şekilde hocam.
@@semihatalay865 muhtemelen private url metodunda bir hata vardır. Bende de aynı sorun vardı. url metodunu hocanın gıthubundakinden kopyaladım düzeldi
@@semihatalay865 link oluşturduğumuz yerde en sona .replace(/\s/g, ''); bunu eklersek düzeliyor sanırım linkte boşluk olduğu için oluyor bende düzeldi
Beyin offline oldu. Kara duman cikiyor... Hasar durumu kontrol ediliyor... :D
1:19:03 Aga ne demek öyle şeyler anlatıyorsun ki eğitim verenlerin %99'u anlattıklarından bahsetmiyor bile.
hocam merhabalar serinizi uzun zamandır izliyorum ilk yorumu da atmak bugune nasipmis. delete isleminde once 404 hatası aldım daha sonra uzunca bir sure ugrasıp durumu halletım ,ancak simdi de 405 hatası alıyorum denedim bircok kez fakat yapamadım. en son care olarak da buraya yazıyorum. daha once aynı dertten muzdarip arkadaslar varsa yardımcı olurlarsa cok makbule gecer. tesekkur ederim
çözdün mü :D
[HttpDelete] atribute ünü [HttpDelete("{id}")] olarak değiştirmeyi unutmuş olabilirsin. sonrada hocanın SaveChangesAsync metodunda yaptığı değişikliği yapınca düzeliyor.
@@hurdanguneyyilmaz5697 Teşekkürler farketmemiştim.
Dk 27
Hocam selamlar sizinle aynı şeyleri yapmama rağmen sürekli aldığım response hatalarını düzeltemedim , 2-3 gündür sadece bununla uğraşıyorum ama yok :( yardımcı olursanız sevinirim.
Failed to load resource : net :: ERR_EMPTY_RESPONSE :7223/APİ%20%20%20%20%20%20/products:1 ve HttpErrorResponse core.mjs:11458
selamlar tekrardan 5 gündür uğraştığım buuu dünyanın en saçma hatasını giderdim :)))))))
arkadaşlar aynı hatayı alan olduysa muhtemelen benim gibi app.UseCors(); kodunu program.cs nin en altına yazmış olmalılar lütfen o minik tatlı kodu alın ve var app =buildier.build(); kodunun hemen altına yapıştırın iyi çalışmalar :))))))))))))))))))))))))
API daki metodlarda route [Route("api/[controller]")] [HttpPost] seklinde belirtmeden ayrica post metodunda public async Task Post([FromBody]VM_Create_Product model) seklinde tanimlamadan angular uzerinden veri iletiminde sorun yasayabilirsiniz.Bu sekilde tanimlamalarinizi yaparsaniz verilerinizi gonderebilirsiniz.
app-routing-module.ts mekanizmasındaki yolları doğru yazdığından emin ol
Teşekkürler hocam