کدنویسی APIهای REST تمیز، قابلاعتماد و ایمن با ASP.NET Core 8 — معرفی کتاب و راهنمای مجموعه
منبع: Coding Clean, Reliable, and Safe REST APIs with ASP.NET Core 8 — Anthony Giretti
اعتبار ترجمه: ترجمه با کمک هوش مصنوعی
فروش یا انتشار این ترجمه منوط به داشتن مجوز لازم از صاحب حقوق اثر است.
کدنویسی APIهای REST تمیز، قابلاعتماد و ایمن با ASP.NET Core 8
توسعهٔ Minimal APIهای مقاوم با .NET 8
نویسنده: Anthony Giretti
کدنویسی APIهای REST تمیز، قابلاعتماد و ایمن با ASP.NET Core 8
توسعهٔ Minimal APIهای مقاوم با .NET 8
Anthony Giretti
اطلاعات انتشار و حقنشر
عنوان اصلی: Coding Clean, Reliable, and Safe REST APIs with ASP.NET Core 8: Develop Robust Minimal APIs with .NET 8
نویسنده: Anthony Giretti — La Salle، کبک، کانادا
ISBN-13 (pbk): 978-1-4842-9978-4 ISBN-13 (electronic): 978-1-4842-9979-1
https://doi.org/10.1007/978-1-4842-9979-1
حقنشر © ۲۰۲۳ برای Anthony Giretti محفوظ است. این اثر مشمول حقنشر است و همهٔ حقوق آن، چه دربارهٔ کل اثر و چه بخشی از آن، نزد ناشر محفوظ است؛ از جمله حقوق ترجمه، چاپ مجدد، استفادهٔ دوباره از تصاویر، بازخوانی، پخش، بازتولید روی میکروفیلم یا هر شیوهٔ فیزیکی دیگر، انتقال یا ذخیره و بازیابی اطلاعات، اقتباس الکترونیکی، نرمافزار رایانهای، یا هر روش مشابه یا متفاوتی که اکنون شناخته شده یا در آینده ایجاد شود.
ممکن است نامها، نشانها و تصاویر دارای علامت تجاری در این کتاب ظاهر شوند. بهجای استفاده از نماد علامت تجاری در هر بار اشاره، نامها، نشانها و تصاویر صرفاً با هدف ویرایشی و در جهت منفعت صاحب علامت تجاری به کار رفتهاند و هیچ قصدی برای نقض حقوق وجود ندارد.
استفاده از نامهای تجاری، علامتهای تجاری، علامتهای خدماتی و اصطلاحات مشابه در این اثر، حتی اگر صریحاً بهعنوان علامت تجاری معرفی نشده باشند، نباید بهمنزلهٔ اظهار نظر دربارهٔ مشمول بودن یا نبودن آنها نسبت به حقوق مالکیت اختصاصی تلقی شود.
با وجود آنکه توصیهها و اطلاعات این کتاب در تاریخ انتشار صحیح و دقیق دانسته شدهاند، نویسنده، ویراستاران و ناشر هیچ مسئولیت حقوقی در برابر خطاها یا کاستیهای احتمالی نمیپذیرند. ناشر دربارهٔ محتوای این اثر، هیچ ضمانت صریح یا ضمنی ارائه نمیکند.
- مدیرعامل Apress Media LLC: Welmoed Spahr
- ویراستار جذب اثر: Smriti Srivastava
- ویراستار توسعه: Laura Berendson
- دستیار تحریریه: Gryffin Winkler
تصویر جلد توسط Freepik طراحی شده است.
این کتاب توسط Springer Science+Business Media New York در بازار جهانی کتاب توزیع شده است. اطلاعات تماس و نشانیهای اصلی ناشر مطابق نسخهٔ منبع حفظ شدهاند. Apress Media, LLC یک شرکت با مسئولیت محدود در کالیفرنیاست و مالک واحد آن Springer Science + Business Media Finance Inc (SSBM Finance Inc)، شرکتی ثبتشده در ایالت Delaware، است.
برای اطلاعات مربوط به ترجمه، چاپ مجدد، نسخهٔ شومیز یا حقوق صوتی، نشانیهای ایمیل اعلامشدهٔ ناشر در نسخهٔ اصلی معتبرند. نسخههای عمدهٔ دانشگاهی، سازمانی یا تبلیغاتی و همچنین مجوزهای کتاب الکترونیکی نیز برای بسیاری از عناوین Apress ارائه میشوند.
کد منبع و دیگر مواد تکمیلی که نویسنده در این کتاب به آنها ارجاع داده است از طریق مخزن GitHub در دسترس خوانندگان قرار دارد؛ جزئیات دسترسی در وبسایت Apress ارائه شده است.
کاغذ بهکاررفته در این محصول قابل بازیافت است.
فهرست مطالب کتاب
- دربارهٔ نویسنده — صفحه ix
- دربارهٔ بازبین فنی — صفحه xi
- قدردانیها — صفحه xiii
- پیشنیازها — صفحه xv
- مقدمه — صفحه xvii
- فصل ۱: معرفی HTTP و REST — صفحه ۱
- آشکارسازی HTTP در پسِ وب — صفحه ۱
- ویژگیهای HTTP — صفحه ۳
- درخواستها و پاسخهای HTTP — صفحه ۴
- پیادهسازی HTTP — صفحه ۵
- گسترش توانایی در وب با سبک معماری REST — صفحه ۳۲
- محدودیتهای REST — صفحه ۳۳
- شیوههای خوب REST — صفحه ۳۴
- جمعبندی — صفحه ۴۱
- فصل ۲: معرفی ASP.NET Core 8 — صفحه ۴۳
- مبانی ASP.NET Core — صفحه ۴۴
- ASP.NET Core Web API — صفحه ۵۳
- ASP.NET Core Minimal APIs — صفحه ۶۵
- جمعبندی — صفحه ۶۹
- فصل ۳: مقدمهای بر بهترین شیوههای توسعهٔ برنامه — صفحه ۷۱
- رسیدن به چارچوب ذهنی درست — صفحه ۷۲
- درک پایهای از کسبوکار — صفحه ۷۲
- مهارتهای حل مسئله — صفحه ۷۲
- درک پارادایمهای برنامهنویسی — صفحه ۷۳
- تفکر منطقی و ساختاریافته — صفحه ۷۳
- مبانی Clean Architecture (معماری تمیز) — صفحه ۷۴
- مبانی Clean Code (کد تمیز) — صفحه ۷۹
- مبانی عمومی کدنویسی — صفحه ۷۹
- مبانی سبک کدنویسی — صفحه ۸۳
- اصول OWASP — صفحه ۸۶
- جمعبندی — صفحه ۹۰
- فصل ۴: مبانی APIهای REST تمیز — صفحه ۹۱
- مسیریابی با ASP.NET Core 8 — صفحه ۹۲
- مسیریابی ASP.NET Core — صفحه ۹۲
- RouteGroups — صفحه ۱۰۳
- Parameter Binding (اتصال پارامتر) — صفحه ۱۰۷
- Parameter Binding دقیقاً چیست؟ — صفحه ۱۰۸
- نمونههای Parameter Binding — صفحه ۱۰۹
- اعتبارسنجی ورودیها — صفحه ۱۱۹
- Object Mapping (نگاشت شیء) — صفحه ۱۲۹
- مدیریت عملیات CRUD و وضعیتهای HTTP — صفحه ۱۳۵
- مدیریت وضعیتهای HTTP — صفحه ۱۳۶
- ساخت سرویسها برای عملیات CRUD — صفحه ۱۳۸
- ساخت Endpointها برای عملیات CRUD — صفحه ۱۴۱
- دانلود و بارگذاری فایلها — صفحه ۱۵۱
- دانلود فایلها — صفحه ۱۵۱
- ادامهٔ فصل ۴
- بارگذاری فایلها — صفحه ۱۵۵
- Streaming (جریاندهی) محتوا — صفحه ۱۶۹
- مدیریت CORS — صفحه ۱۷۱
- نسخهبندی API — صفحه ۱۷۷
- نسخهبندی با Headerها — صفحه ۱۷۸
- نسخهبندی با Route — صفحه ۱۸۷
- مستندسازی APIها — صفحه ۱۹۰
- مدیریت نسخههای API در Swagger — صفحه ۱۹۲
- افزودن توضیحات به Endpointها — صفحه ۱۹۹
- گروهبندی Endpointها با Tag — صفحه ۲۰۶
- سفارشیسازیهای دیگر — صفحه ۲۰۷
- جمعبندی — صفحه ۲۱۲
- فصل ۵: پیشروی بیشتر در APIهای REST تمیز — صفحه ۲۱۳
- کپسولهسازی پیادهسازی Minimal Endpoint — صفحه ۲۱۴
- پیادهسازی Parameter Binding سفارشی — صفحه ۲۱۹
- نمونهٔ Binding سفارشی از Headerها — صفحه ۲۲۰
- نمونهٔ Binding سفارشی از Form Data — صفحه ۲۲۲
- استفاده از Middlewareها — صفحه ۲۲۵
- استفاده از Action Filterها — صفحه ۲۳۸
- استفاده از Rate Limiting (محدودسازی نرخ) — صفحه ۲۴۳
- مدل Fixed Window (پنجرهٔ ثابت) — صفحه ۲۴۶
- مدل Sliding Window (پنجرهٔ لغزان) — صفحه ۲۵۳
- مدل Token Bucket (سطل توکن) — صفحه ۲۵۵
- مدل Concurrency (همزمانی) — صفحه ۲۵۷
- مدیریت سراسری خطا — صفحه ۲۵۹
- جمعبندی — صفحه ۲۶۶
- فصل ۶: دسترسی ایمن و کارآمد به داده — صفحه ۲۶۷
- مقدمهای بر بهترین شیوههای دسترسی به داده — صفحه ۲۶۷
- دسترسی به داده از نوع SQL — صفحه ۲۶۸
- دسترسی به داده با HTTP — صفحه ۲۶۹
- معماری دسترسی به داده — صفحه ۲۶۹
- دسترسی به داده با Entity Framework Core 8 — صفحه ۲۷۱
- مرحله ۱: ساخت کلاس CountryEntity — صفحه ۲۷۲
- مرحله ۲: ساخت Context در EF Core — صفحه ۲۷۳
- مرحله ۳: پیکربندی CountryEntity — صفحه ۲۷۴
- مرحله ۴: تولید مدل پایگاه داده از C# — صفحه ۲۷۶
- مرحله ۵: فعالسازی Resiliency (تابآوری) با Entity Framework Core — صفحه ۲۸۰
- مرحله ۶: نوشتن Repository روی CountryEntity — صفحه ۲۸۱
- دسترسی به داده با HttpClient و REST APIها — صفحه ۲۹۴
- استفاده از IHttpClientFactory برای درخواستهای HTTP — صفحه ۲۹۵
- استفاده از Refit برای درخواستهای HTTP — صفحه ۲۹۷
- استفاده از Polly برای تابآور کردن درخواستهای HTTP — صفحه ۲۹۸
- جمعبندی — صفحه ۳۰۱
- فصل ۷: بهینهسازی APIها — صفحه ۳۰۳
- برنامهنویسی ناهمگام — صفحه ۳۰۳
- مبانی برنامهنویسی ناهمگام — صفحه ۳۰۴
- استفاده از CancellationToken — صفحه ۳۰۶
- کارهای طولانیمدت با Background Services — صفحه ۳۱۰
- Paging (صفحهبندی) — صفحه ۳۲۱
- JSON Streaming (جریاندهی JSON) — صفحه ۳۲۴
- Caching (کش) — صفحه ۳۲۶
- Output Cache — صفحه ۳۲۶
- In-Memory Cache — صفحه ۳۳۰
- Distributed Cache — صفحه ۳۳۶
- ادامهٔ فصل ۷
- افزایش سرعت درخواستهای HTTP با HTTP/2 و HTTP/3 — صفحه ۳۴۲
- جمعبندی — صفحه ۳۴۳
- فصل ۸: مقدمهای بر Observability (مشاهدهپذیری) — صفحه ۳۴۵
- مبانی Observability — صفحه ۳۴۶
- انجام Logging (ثبت لاگ) — صفحه ۳۴۷
- جمعآوری دادههای Tracing (ردیابی) و Metrics (سنجهها) — صفحه ۳۶۳
- پیادهسازی HealthCheck — صفحه ۳۶۷
- Liveness HealthCheck — صفحه ۳۶۸
- Readiness HealthCheck — صفحه ۳۷۰
- جمعبندی — صفحه ۳۷۴
- فصل ۹: مدیریت Secrets (اسرار برنامه) — صفحه ۳۷۵
- مقدمهای بر مدیریت اسرار برنامه — صفحه ۳۷۵
- نمونه با Azure Key Vault — صفحه ۳۷۸
- جمعبندی — صفحه ۳۸۳
- فصل ۱۰: ایمنسازی برنامه با OpenID Connect — صفحه ۳۸۵
- مقدمهای بر OpenID Connect — صفحه ۳۸۶
- پیکربندی Authentication (احراز هویت) و Authorization (مجوزدهی) در ASP.NET Core — صفحه ۳۸۹
- ارسال JWT در درخواستها و دریافت هویت کاربر — صفحه ۳۹۵
- جمعبندی — صفحه ۴۰۱
- فصل ۱۱: آزمون APIها — صفحه ۴۰۳
- مقدمهای بر آزمون — صفحه ۴۰۳
- Unit Testing (آزمون واحد) کارآمد — صفحه ۴۰۵
- استفاده از ابزارهای مناسب — صفحه ۴۰۶
- آزمون گامبهگام یک SUT — صفحه ۴۰۸
- جمعبندی — صفحه ۴۱۸
- نمایه — صفحه ۴۱۹
دربارهٔ نویسنده
Anthony Giretti توسعهدهنده/معمار ارشد در Marchex در تورنتوی کاناداست. او از یادگیری و آموزش فناوریهای جدید لذت میبرد، بیش از ۱۷ سال تجربه در فناوریهای وب دارد و علاقهٔ ویژهای به .NET نشان میدهد. تخصص او در توسعه و فناوری اطلاعات و اشتیاقش به انتقال دانش به او امکان میدهد هر پروژهٔ وبی را به اجزای قابلفهم تقسیم کند تا به دیگر توسعهدهندگان برای رسیدن به اهداف پروژه کمک کند. او به چالشهای Performance (کارایی)، دسترسپذیری بالا و بهینهسازی علاقهمند است. Anthony نویسندهٔ کتاب Beginning gRPC with ASP.NET Core 6 از Apress، ششبار برگزیدهٔ Microsoft MVP و دارای گواهی Microsoft Certified Software Developer (MCSD) است.
دربارهٔ بازبین فنی
Fiodar Sazanavets یک Microsoft MVP و مهندس نرمافزار ارشد با بیش از یک دهه تجربهٔ حرفهای است. تخصص اصلی او .NET و پشتهٔ فناوری Microsoft است و به ساخت نرمافزارهای خوشساختی که نیازهای کسبوکار را بهطور کامل برآورده کنند علاقه دارد. او از آموزش توسعهدهندگان در ابتدای مسیر و اشتراک دانش با جامعه لذت میبرد و این کار را هم بهصورت داوطلبانه و هم تجاری انجام داده است. Fiodar چندین دورهٔ آنلاین ساخته، چند کتاب فنی و انواع دیگر محتوای آموزشی نوشته و خدمات منتورینگ زنده برای گروهها و افراد ارائه میکند. او در طول فعالیت حرفهای خود نرمافزارهایی با انواع و سطوح پیچیدگی مختلف در صنایع گوناگون ساخته است؛ از سامانهٔ مدیریت اطلاعات مسافر راهآهن و خوشههای هوشمند توزیعشدهٔ دستگاههای IoT گرفته تا سامانههای تجارت الکترونیکی و پردازش تراکنشهای مالی. همچنین با موفقیت تیمهای توسعهٔ نرمافزار را رهبری و هدایت کرده است.
قدردانیها
تکمیل این کتاب بدون مشارکت و کمک افراد بسیاری ممکن نبود و میخواهم قدردانی ویژهام را از آنان بیان کنم. نخست از همسرم Nadege تشکر میکنم که هیچگاه از حمایت من دست نکشید. دوستت دارم!
سپس از دیگر اعضای خانوادهام برای حمایتشان سپاسگزارم.
این کتاب در شرایط ویژهای نوشته شد؛ زمانی که بهدلیل بیماری شدیدی که میتوانست جانم را بگیرد در بیمارستان بستری بودم. تسلیم نشدم و امیدوارم این کتاب رضایت شما را جلب کند؛ اگر توانستم آن را به پایان برسانم، امیدوارم دلیل خوبی داشته باشد!
همچنین از همکارانم در Marchex، بهویژه دوست و همکارم Callon Campbell که هیچگاه از تشویق من دست نکشید، سپاسگزارم.
از دوستم Dominique St-Amand نیز ممنونم که همیشه با سخاوتمندی دیدگاههایش را برای بهتر شدن این کتاب با من در میان گذاشت.
و در پایان، اما نه کماهمیتتر از دیگران، Fiodar Sazanavets! ممنونم دوست من که بخشی از این مسیر بودی؛ در این چالش تازهای که برای خودم تعیین کرده بودم نقشی اساسی داشتی. بدون تو موفق نمیشدم.
پیشنیازها
این کتاب برای توسعهدهندگان مبتدی و متوسطی نوشته شده است که میخواهند مهارتهای توسعهٔ Application Programming Interface (API) خود را به سطح بعد برسانند. در این کتاب فرض میکنم با مبانی .NET و C# و در نتیجه با اصول Object-Oriented Programming (OOP) آشنا هستید. همچنین فرض میکنم پیشتر از Visual Studio استفاده کردهاید و روش کار با آن را میدانید. دربارهٔ مبانی وب، همهچیز را از ابتدا شروع کردهام؛ بنابراین اگر آشنایی زیادی با وب ندارید، مشکلی نیست.
مقدمه
دوست خواننده، به این کتاب خوش آمدید!
در طول فعالیت حرفهایام در شرکتهای مختلف و روی APIهای پیچیدهٔ گوناگونی کار کردهام. هر شرکت چالشهای خاص خود را داشت، اما میتوانم با اطمینان بگویم همه یک نقطهٔ مشترک داشتند: APIهایشان به توجه و مراقبت بیشتری نیاز داشت. همگی از مشکلات مشابهی رنج میبردند؛ سازماندهی ضعیف کد در نتیجهٔ انباشته شدن خطاهای کوچک در طول سالها، نبود انسجام در تعریف قراردادهای کدنویسی، بهروز نشدن کافی فناوریها، برداشتهای نادرست از اصول HyperText Transfer Protocol (HTTP) و Representational State Transfer (REST)، نبود Logging (ثبت لاگ) یا شیوههای نامناسب ثبت لاگ، و توجه ناکافی به Performance (کارایی).
همیشه از کمک به تیمها برای عبور از این دشواریها لذت بردهام و تصمیم گرفتم کتابی بنویسم تا تجربههایم را به اشتراک بگذارم و شما را در مسیر بهترین شیوههای پیادهسازی API راهنمایی کنم. این کتاب تا اندازهای بر معماری فنی یک API تمرکز دارد، اما تمرکز اصلی آن روی شیوههای کدنویسی است تا به شما کمک کند از رایجترین خطاهای دوران حرفهای توسعهٔ نرمافزار دوری کنید. معماری راهکاری را که در آن یک API پیرامون سامانههای دیگر ساخته میشود پوشش نمیدهم، اما نشان خواهم داد چگونه دسترسی به منابع دادهٔ خارجی را پیادهسازی کنید.
در پایان کتاب خواهید دانست چگونه APIهایی با ASP.NET Core 8 توسعه دهید که کدنویسی صحیح، Performance (کارایی) مناسب، Resiliency (تابآوری)، امنیت، قابلیت آزمون و قابلیت اشکالزدایی داشته باشند. با آموختن دقیق آنچه واقعاً نیاز دارید، بدون آنکه زیر حجم عظیمی از اطلاعات قرار بگیرید، از سطح مبتدی/متوسط به سطح ارشد نزدیک خواهید شد.
شروع کنیم!