AspNetCore-WebApi-Course
                                
                                
                                
                                    AspNetCore-WebApi-Course copied to clipboard
                            
                            
                            
                        Professional REST API design with ASP.NET Core and WebAPI
🥇Professional REST API design with ASP.NET Core WebAPI
This project is an example of lightweight and extensible infrastructure for building RESTful Web API with ASP.NET Core.
This example contains a number of tricks and techniques that is the result of many years of my experience in WebAPI/RESTful programming in ASP.NET Core
If you want a total deep dive on REST, API security, ASP.NET Core and much more, check out my Course.
Testing it out
- Clone or download this repository
 - Build the solution using command line with 
dotnet build - Go to MyApi directory and run project using command line with 
dotnet run - Browse to this url https://localhost:5001/swagger to see SwaggerUI page
 
Techniques and Features
- JWT Authentication
 - Secure JWT using Encryption (JWE)
 - Logging to File, Console and Database using Elmah & NLog
 - Logging to sentry.io (Log Management System)
 - Exception Handling using Custom Middleware
 - Automatic Validation
 - Standard API Resulting
 - Dependency Injection using Autofac (Ioc Container)
 - Map resources using AutoMapper
 - Async/Await Best Practices
 - Versioning Management
 - Using Swagger (Swashbuckle)
 - Auto Document Generator for Swagger
 - Integrate Swagger and Versioning
 - Integrate Swagger and JWT/OAuth Authentication
 - Best Practices for Performance and Security
 
Give a Star! ⭐️
If you like this project, learn something or you are using it in your applications, please give it a star. Thanks!
🥇پروژه دوره API نویسی اصولی و حرفه ای در ASP.NET Core
در این دوره همه نکات مهم و پرکاربرد در API نویسی اصولی و حرفه ای در ASP.NET Core بررسی شده اند.
در این دوره سعی شده بهترین و محبوب ترین تکنولوژی ها، کتابخانه ها و ابزار ها داخل پروژه استفاده بشه. همچنین Best Practice های پرفرمنسی و امنیتی بعلاوه تکنیک های پرکاربرد را بررسی و در قالب یک معماری حرفه ای و اصولی استفاده می کنیم.
توجه:
- برنچ master این مخزن همواره به آخرین نسخه ASP.NET Core (به همراه تمام Dependency هایش) بروز رسانی شده و خواهد شد (در حال حاضر ASP.NET Core 6.0 می باشد)
 - جهت دسترسی به کد اولیه پروژه که با ASP.NET Core 2.1 در هنگام تهیه دوره نوشته بود به این برنچ مراجعه کنید
 - جهت دسترسی به کد پروژه در ورژن ASP.NET Core 3.1 به این برنچ مراجعه کنید
 - جهت دسترسی به کد پروژه در ورژن ASP.NET Core 5.0 به این برنچ مراجعه کنید
 - همچنین جهت اطلاعات بیشتر از تغییرات که به هنگام Upgrade پروژه از نسخه 2.1 به 3.1 انجام شد، میتونین به قسمت ChangeLog مراجعه کنید
 
تکنولوژی، ابزار ها و قابلیت ها
- لایه بندی اصولی پروژه (Project Layering and Architecture) : در این دوره لایه بندی اصولی یک پروژه را از ابتدا شروع و هر بخش را بررسی می کنیم. همچنین مباحث Repository و UOW رو هم بررسی می کنیم.
 - احراز هویت (Authentication)
- ASP.NET Core Identity : احراز هویت توسط Identity + سفارشی سازی
 - (Json Web Token) JWT : احراز هویت توسط Jwt + یکپارچه سازی آن با Identity
 - (Json Web Encryption) JWE : ایمن سازی توکن ها بوسیله رمزنگاری توکن (JWE)
 - Security Stamp : جلوگیری از اعتبارسنجی توکن به هنگام تغییر دسترسی های کاربر جهت امنیت بیشتر
 - Claims : کار با Claim ها و تولید خودکار آنها توسط ClaimsFactory
 
 - Logging (ثبت خطا ها)
- Elmah : استفاده از Elmah برای لاگ خطا ها در Memory, XML File و Database
 - NLog : استفاده از NLog برای لاگ خطا ها در File و Console
 - Custom Middleware : نوشتن یک میدلویر سفارشی جهت لاگ تمامی خطا (Exception) ها
 - Custom Exception : نوشتن Exception برای مدیریت ساده تر خطا ها
 - Sentry : ثبت خطا ها در سیستم مدیریت لاگ sentry.io (مناسب برای پروژه های بزرگ)
 
 - تزریق وابستگی (Dependency Injection)
- ASP.NET Core IOC Container : استفاده از Ioc container داخلی Asp Core
 - Autofac : استفاده از محبوب ترین کتابخانه Autofac (Ioc Container)
 - Auto Registeration : ثبت خودکار سرویس ها توسط یک تکنیک خلاقانه با کمک Autofac
 
 - ارتباط با دیتابیس (Data Access)
- Entity Framework Core : استفاده از EF Core
 - Auto Entity Registration : ثبت Entity های DbContext به صورت خودکار توسط Reflection
 - Pluralizing Table Name : جمع بندی نام جداول EF Core به صورت خودکار توسط کتابخانه Pluralize.NET و Reflection
 - Automatic Configuration : اعمال کانفیگ های EntityTypeConfiguration (FluentApi) به صورت خودکار توسط Reflection
 - Sequential Guid : بهینه سازی مقدار دهی identity برای Guid به صورت خودکار توسط Reflection
 - Repository : توضیحاتی در مورد معماری اصولی Repository در EF Core
 - Data Intitializer : یک معماری اصولی برای Seed کردن مقادیر اولیه به Database
 - Auto Migrate : آپدیت Database به آخرین Migration به صورت خودکار
 - Clean String : اصلاح و یک دست سازی حروف "ی" و "ک" عربی به فارسی و encoding اعداد فارسی در DbContext به صورت خودکار به هنگام SaveChanges
 
 - Versioning : نسخه بندی و مدیریت نسخه های پروژه + سفارشی سازی و ایجاد یک معماری حرفه ای
 - ابزار (Swashbuckle) Swagger
- Swagger UI : ساخت یک ظاهر شکیل به همراه داکیومنت Aciton ها و Controller های پروژه و امکان تست API ها توسط Swagger UI
 - Versioning : یکپارچه سازی اصولی Swagger با سیستم نسخه گذاری (Versioning)
 - JWT Authentication : یکپارچه سازی Swagger با سیستم احراز هویت بر اساس Jwt
 - OAuth Authentication : یکپارچه سازی Swagger با سیستم احراز هویت بر اساس OAuth
 - Auto Summary Document Generation : تولید خودکار داکیومنت (توضیحات) برای API های پروژه
 - Advanced Customization : سفارشی سازی های پیشرفته در Swagger
 
 - دیگر قابلیت ها
- API Standard Resulting : استاندارد سازی و یک دست سازی خروجی API ها توسط ActionFilter
 - Automatic Model Validation : اعتبار سنجی خودکار
 - AutoMapper : جهت Mapping اشیاء توسط کتابخانه محبوب AutoMapper
 - Auto Mapping : سفارشی سازی وایجاد یک معماری حرفه ای برای Mapping اشیا توسط Reflection
 - Generic Controller : ساخت کنترلر برای عملیات CRUD بدون کد نویسی توسط ارث بری از CrudController
 - Site Setting : مدیریت تنظیمات پروژ توسط Configuration و ISnapshotOptions
 - Postman : آشنایی و کار با Postman جهت تست API ها
 - Minimal Mvc : حذف سرویس های اضافه MVC برای افزایش پرفرمنس در API نویسی
 - Best Practices : اعمال Best Practices ها جهت بهینه سازی، افزایش پرفرمنس و کدنویسی تمیز و اصولی
 - و چندین نکته مفید دیگر ...
 
 
مزیت اصلی این دوره؟
به جای اینکه ماه ها وقت صرف کنین تحقیق کنین، مطالعه کنین و موارد کاربردی و مهم API نویسی رو یاد بگیرین توی این دوره همشو یک جا و سریع یاد میگیرین و تو وقتتون صرفه جویی میشه. همچنین یک پله هم به Senior Developer شدن نزدیک میشین ;)
دانلود ویدئو های آموزشی دوره
این دوره در قالب (در مجموع) 22 ساعت آموزش ویدئویی توسط محمد جواد ابراهیمی (mjebrahimi) تدریس شده است.
لینک دانلود : خرید از سایت بیاموز (کد تخفیف 20 درصدی : DotNetZoom)
پیش نیاز این دوره :
سطح دوره پیشرفته بوده و برای افراد مبتدی مناسب نیست.
این دوره، آموزش ASP.NET Core نیست و زیاد روی مباحثش عمیق نمیشیم و فقط به مباحثی می پردازیم که مرتبط با API نویسی توی ASP.NET Core هستش.
انتظار میره برای شروع این دوره پیش نیاز های زیر رو داشته باشین :
- تسلط نسبی بر روی زبان سی شارپ
 - آشنایی با پروتکل Http و REST
 - آشنایی با Entity Framework (ترجیحا EF Core)
 - آشنایی با ASP.NET MVC یا ASP.NET Core (و ترجیحا آشنایی با WebAPI)
 
ارتباط با مدرس
جهت ارتباط با مدرس و ارائه هرگونه پیشنهاد، انتقاد، نظر و سوالاتتون میتونین با اکانت تلگرام محمد جواد ابراهیمی در ارتباط باشین mjebrahimi@
حمایت از ما
⭐️در پایان اگه واقعا از دوره خوشتون اومده بود حتما بهش Star بدین . با اینکار حمایت خودتون رو از ما اعلام میکنین🙏 و این به ما انگیزه میده آموزش های بیشتری تهیه کنیم✌