جمع آوری داده یک Api با fs.createWriteStream
تا کنون از Rest Api در وردپرس استفاده کرده اید؟ همه API های سایت های وردپرسی به گونه ای هستند که تمام اطلاعات را در اختیار شما میگذارند. مثلا عنوان مقاله، لینک مقاله، محتوای مقاله، تصویر مقاله و …
اگر بخواهیم به یک سری داده دسترسی پیدا کنیم چکار باید کنیم؟ ان هم با ند جی اس! میخواهیم داده های خاصی را جدا کرده و در فایلی ذخیره کنیم.
فرض کنید بخواهیم از سایت kaaam.ir ده مقاله اخرش را بیاوریم و فقط لینک و عنوان مقاله را (فارغ از محتوای مقاله اش) در یک فایل ذخیره کنیم.
ما نمیخواهیم تمام داده ها و تمام محتوای هر مقاله را داشته باشیم. فقط لینک مقاله را میخواهیم و فقط عنوان مقاله را میخواهیم. سپس این لینک و عنوان را بصورت جیسون و به فرمت expanded (قابل خوانا توسط انسان) ذخیره میکنیم. (الان در یک فایل ذخیره میکنیم. شاید در یک پروژه واقعی بخواهیم در دیتابیس ذخیره کنیم)
کدها در گیتهابتفسیر کدها
اگر کلا بجای استریم از درخواست عادی ند جی اس استفاده میکردیم
اینجا با کد fs.createWriteStream یک استریم ایجاد کردیم و سپس با pipe داده را به مقصد پایپ کردیم. اما بیایید یک قدم عقب تر برویم. اگر استریم نبود چیکار میخواستیم بکنیم؟ مانند این مقاله داده ها را جمع اوری میکردیم.
نمایش کدهای جیسون به فرمت expanded
همانطور که میدانید ابجکت ها در جاوااسکریپت خیلی راحت با متد JSON.stringify به فرمت جیسون تبدیل میشوند. برای تبدیل جیسون به ابجکت هم از متد JSON.parse استفاده میشود.
برای نمایش json به صورت expanded از کد زیر استفاده کردیم.
JSON.stringify(articles, null, 1)
میتوانید بجای کد بالا این یکی را امتحان کنید و نتیجه را ببینید! یک سری کدهای minified به دست میاد.
JSON.stringify(articles)
نتیجه گیری
در طی یادگیری توجه کردید که این پروسه را میتوانید برای هر سایت وردپرسی اجرا کنید؟ مثلا در هنگام تعریف url بجای kaaam.ir بگذارید: poyasazeh.ir یا soroush-mohammadi.ir ! در هر دو این سایت هم جواب میدهد زیرا با وردپرس ساخته شده اند.
اما اگر برای juniorfrontend.ir امتحان کنید ارور میدهد! دلیلش در ریپوسیتوری گیتهاب ذکر شده! دکمه آبی رنگ بالا را کلیک کنید!