<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های Sadra Z.Khamneh</title><link>https://virgool.ir/feed/@sadra.z.kh</link><description></description><language>fa</language><pubDate>2026-11-12 12:15:43</pubDate><image><url>https://files.virgool.ir/upload/users/165817/avatar/avatar.png</url><title>Sadra Z.Khamneh</title><link>https://virgool.ir/@sadra.z.kh</link></image><item><title>HATEOAS چیست و چرا باید از آن استفاده کنیم ؟(قسمت اول)</title><link>https://virgool.ir/@sadra.z.kh/hateoas-چیست-و-چرا-باید-از-آن-استفاده-کنیم-قسمت-اول-hncigpnc2dzg</link><description>HATEOAS (hypermedia به عنوان موتور حالت برنامه) یک محدودیت مهم REST است. بدون آن، REST API را نمی‌توان RESTful در نظر گرفت و بسیاری از مزایایی که ما با اجرای یک معماری REST بدست می‌آوریم در دسترس نیستند.hypermedia به هر نوع محتوایی که شامل لینک‌های رسانه‌ای مانند اسناد، تصاویر و ویدیو باشد، اشاره می‌کند.REST architecture به ما اجازه می‌دهد تا به صورت پویا لینک‌های hypermedia را در پاسخ‌های خود ایجاد کنیم و در نتیجه باعث تسهیل در ناوبری آسان‌تر شود. برای بیان این موضوع، در مورد یک وب سایت فکر کنید که از هایپر لینک‌ها برای کمک به شما در مسیر یابی به بخش‌های مختلف آن استفاده می‌کند. شما می‌توانید همان اثر را با HATEOAS در REST به دست آورید.وب سایتی را تصور کنید که صفحه اصلی دارد و شما داخل صفحه اصلی هستید اما داخل صفحه اصلی هیچ لینکی به هیچ کجا وجود ندارد لذا شما برای پیدا کردن مسیر خود در وب سایت دچار مشکل میشوید البته که api مانند یک وب سایت نیست توانایی کشف api برای خودتان می‌تواند بسیار مفید باشد.اجازه دهید ببینیم این دقیقاً چگونه کار می‌کند.ریسپانس عادی به همراه پیاده سازی HATEOASاجازه دهید بگوییم که می‌خواهیم برخی مالکان از api را بدست آوریم.اما چطور میتوانیم این کار را بکنیم ؟ما حتی نمی‌دونیم چطور به مالکان برسیم ؟ خوب ، اول تنها چیزی که می‌دانیم این است که چگونه درخواست کنیم و این ریشه برنامه است :https://localhost:50001/apiنقطه پایانی ریشه باید بیشتر در مورد API و یا ترجیحاً جایی که شروع به کاوش آن می‌کند، به ما بگوید:[&#xA;    {&#xA;        &#34;href&#34;: &#34;http://localhost:5001/api&#34;,&#xA;        &#34;rel&#34;: &#34;self&#34;,&#xA;        &#34;method&#34;: &#34;GET&#34;&#xA;    },&#xA;    {&#xA;        &#34;href&#34;: &#34;http://localhost:5001/api/owner&#34;,&#xA;        &#34;rel&#34;: &#34;owner&#34;,&#xA;        &#34;method&#34;: &#34;GET&#34;&#xA;    },&#xA;    {&#xA;        &#34;href&#34;: &#34;http://localhost:5000/api/owner&#34;,&#xA;        &#34;rel&#34;: &#34;create_owner&#34;,&#xA;        &#34;method&#34;: &#34;POST&#34;&#xA;    }&#xA;]بسیار خوب, حالا می‌دانیم چه چیزی برای ما در دسترس است و می‌توانیم به دنبال مالکان فعلی باشیم:http://localhost:5001/api/ownerو در واقع مالکان:[&#xA;    {&#xA;        &#34;Id&#34;: &#34;24fd81f8-d58a-4bcc-9f35-dc6cd5641906&#34;,&#xA;        &#34;Name&#34;: &#34;John Keen&#34;,&#xA;        &#34;DateOfBirth&#34;: &#34;1980-12-05T00:00:00&#34;,&#xA;        &#34;Address&#34;: &#34;61 Wellfield Road&#34;,&#xA;        &#34;Links&#34;: [&#xA;            {&#xA;                &#34;href&#34;: &#34;https://localhost:5001/api/owner/24fd81f8-d58a-4bcc-9f35-dc6cd5641906&#34;,&#xA;                &#34;rel&#34;: &#34;self&#34;,&#xA;                &#34;method&#34;: &#34;GET&#34;&#xA;            },&#xA;            {&#xA;                &#34;href&#34;: &#34;https://localhost:5001/api/owner/24fd81f8-d58a-4bcc-9f35-dc6cd5641906&#34;,&#xA;                &#34;rel&#34;: &#34;delete_owner&#34;,&#xA;                &#34;method&#34;: &#34;DELETE&#34;&#xA;            },&#xA;            {&#xA;                &#34;href&#34;: &#34;https://localhost:5001/api/owner/24fd81f8-d58a-4bcc-9f35-dc6cd5641906&#34;,&#xA;                &#34;rel&#34;: &#34;update_owner&#34;,&#xA;                &#34;method&#34;: &#34;PUT&#34;&#xA;            }&#xA;        ]&#xA;    },&#xA;    {&#xA;        &#34;Id&#34;: &#34;261e1685-cf26-494c-b17c-3546e65f5620&#34;,&#xA;        &#34;Name&#34;: &#34;Anna Bosh&#34;,&#xA;        &#34;DateOfBirth&#34;: &#34;1974-11-14T00:00:00&#34;,&#xA;        &#34;Address&#34;: &#34;27 Colored Row&#34;,&#xA;        &#34;Links&#34;: [&#xA;            {&#xA;                &#34;href&#34;: &#34;https://localhost:5001/api/owner/261e1685-cf26-494c-b17c-3546e65f5620&#34;,&#xA;                &#34;rel&#34;: &#34;self&#34;,&#xA;                &#34;method&#34;: &#34;GET&#34;&#xA;            },&#xA;            {&#xA;                &#34;href&#34;: &#34;https://localhost:5001/api/owner/261e1685-cf26-494c-b17c-3546e65f5620&#34;,&#xA;                &#34;rel&#34;: &#34;delete_owner&#34;,&#xA;                &#34;method&#34;: &#34;DELETE&#34;&#xA;            },&#xA;            {&#xA;                &#34;href&#34;: &#34;https://localhost:5001/api/owner/261e1685-cf26-494c-b17c-3546e65f5620&#34;,&#xA;                &#34;rel&#34;: &#34;update_owner&#34;,&#xA;                &#34;method&#34;: &#34;PUT&#34;&#xA;            }&#xA;        ]&#xA;    },&#xA;    &#34;...&#34;&#xA;]همانطور که می‌بینید, ما لیستی از مالکان و تمام کارهایی که می‌توانیم روی آن‌ها انجام بدهیم را داریم. و …بنابراین ، این یک روش خوب برای ساختن یک API قابل کشف و تکامل است.لینک چیست ؟با توجه به تعریف RFC5988 لینک &#34;یک اتصال تایپ شده بین دو منبع که توسط شناسه منابع بین المللی (IRIs) شناسایی می شوند&#34; هستش.به بیان ساده ما از پیوندهایی برای پیمایش اینترنت یا بهتر بگوییم منابع موجود در اینترنت استفاده می کنیم.پاسخ های ما شامل آرایه ای از پیوندها است که براساس چند پراپرتی مطابق RFC تشکیل شده است:href : یک URI هدف را نشان می دهدrel : یک نوع رابطه پیوند را نشان می دهد ، به این معنی که نحوه ارتباط زمینه فعلی با منبع هدف را توصیف می کندmethod : ما به روش HTTP نیاز داریم تا بدانیم چگونه URI های یکسان را تشخیص دهیمجوانب مثبت و منفی پیاده سازی HATEOASپس تمامی مزیت هایی که میتوانیم در هنگام اجرای HATEOAS انتظار داشته باشیم چیست ؟HATEOAS برای پیاده سازی به هیچ عنوان ساده نیست اما مزیت هایی که دارد به دشواری آن می ارزد . برخی از این موارد عبارتند از :API قابل کشف و کاوش می شودمشتری می تواند از پیوندها برای پیاده سازی منطق خود استفاده کند ، بسیار آسان تر می شود و هر تغییری که در ساختار API رخ دهد مستقیماً بر روی مشتری منعکس می شودسرور حالت برنامه و ساختار URL را هدایت می کند و برعکس نیستاز روابط پیوند می توان برای نشان دادن اسناد توسعه دهنده استفاده کردورژن گذاری از طریق پیوندها آسان تر می شوددر خواست های نامعتبر کاهش پیدا میکندApi بدون قطع اتصال تمامی کاربران قابلیت تغییر را داردما می توانیم کارهای زیادی با HATEOAS انجام دهیم. اما از آنجا که پیاده سازی همه این ویژگی ها آسان نیست ، باید دامنه API خود را بخاطر بسپاریم و اگر واقعاً به همه این موارد احتیاج داریم. تفاوت زیادی بین یک API عمومی با حجم زیاد و برخی از API های داخلی وجود دارد که برای برقراری ارتباط بین قسمت های همان سیستم مورد نیاز است.مانند هر چیز دیگری ، زمینه همه چیز است. ساده باشدر حال حاضر این تئوری بیش از حد کافی است. بیایید در قسمت بعد شروع به کار کنیم و ببینیم که اجرای دقیق HATEOAS چگونه است.منبع : https://code-maze.com/hateoas-aspnet-core-web-api/#preparation</description><category>Sadra Z.Khamneh</category><author>Sadra Z.Khamneh</author><pubDate>Tue, 08 Dec 2020 00:58:28 +0330</pubDate></item></channel></rss>