Skip to content

javaddelfani-asp/AspNetCore-WebApi-Course

 
 

Repository files navigation

🥇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

  1. Clone or download this repository
  2. Build the solution using command line with dotnet build
  3. Go to MyApi directory and run project using command line with dotnet run
  4. 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 هستش.

انتظار میره برای شروع این دوره پیش نیاز های زیر رو داشته باشین :

  1. تسلط نسبی بر روی زبان سی شارپ
  2. آشنایی با پروتکل Http و REST
  3. آشنایی با Entity Framework (ترجیحا EF Core)
  4. آشنایی با ASP.NET MVC یا ASP.NET Core (و ترجیحا آشنایی با WebAPI)

ارتباط با مدرس

جهت ارتباط با مدرس و ارائه هرگونه پیشنهاد، انتقاد، نظر و سوالاتتون میتونین با اکانت تلگرام محمد جواد ابراهیمی در ارتباط باشین mjebrahimi@

حمایت از ما

⭐️در پایان اگه واقعا از دوره خوشتون اومده بود حتما بهش Star بدین . با اینکار حمایت خودتون رو از ما اعلام میکنین🙏 و این به ما انگیزه میده آموزش های بیشتری تهیه کنیم✌