🥇 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@