با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، در این جلسه از آموزش های دوره D3.js در مورد درخواست API در D3.js بحث خواهیم کرد. D3.js یک درخواست API را برای انجام XMLHttpRequest فراهم می کند. این فصل درخواست های مختلف API و متدهای درخواست API در D3 را با جزئیات توضیح می دهیم.
با در خواست XMLHttp کلاینت های Http می توانند اشیاء XMLHttpRequest را محاسبه کنند. این می تواند با JS طراحی شده مرورگرها برای بهبود استفاده مجدد از کد و اجازه استفاده از کتابخانه های موجود استفاده شود.شما می توانید این ماژول را در پروژه خود قرار دهید و به عنوان شیء XHR مبتنی بر مرورگر همانطور که در زیر توضیح داده شده استفاده کنید.
1 2 | var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; var xhr = new XMLHttpRequest(); |
این از هر دو درخواست های غیر همزمان و همزمان را پشتیبانی می کند و درخواست های GET، POST، PUT و DELETE را انجام می دهد.
شما می توانید مستقیما از “d3js.org” اسکریپت زیر بارگذاری کنید.
1 2 3 4 | <script src = "https://d3js.org/d3-request.v1.min.js"></script> <script> d3.json("/path/to/sample.json", callback); </script> |
درخواستهای API دارای پشتیبانی داخلی برای تجزیه JSON، CSV و TSV هستند. شما می توانید فرمت های دیگر را با استفاده از درخواست یا متن به طور مستقیم تجزیه کنید.
برای بارگذاری یک فایل متنی، از سینتکس زیر استفاده کنید.
1 2 3 4 | d3.text("/path/to/sample.txt", function(error, text) { if (error) throw error; console.log(text); }); |
برای بارگیری و تجزیه یک فایل CSV، از سینتکس زیر استفاده کنید.
1 2 3 4 | d3.csv("/path/to/sample.csv", function(error, data) { if (error) throw error; console.log(data); }); |
به طور مشابه، شما می توانید فایل های JSON و TSV را نیز بارگیری کنید.
اجازه دهید از طریق یک مثال ساده چگونگی بارگیری و تجزیه یک فایل CSV را دریابیم. قبل از آن، شما باید یک فایل CSV با نام “sample.csv” در پوشه برنامه D3 خود ایجاد کنید، همانطور که در زیر نشان داده شده است.
1 2 3 4 5 6 | Num1,Num2 1,2 3,4 5,6 7,8 9,10 |
اکنون، یک صفحه وب “requests.html” با استفاده از اسکریپت زیر ایجاد کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!DOCTYPE html> <html> <head> <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script> </head> <body> <h3> D3.js Requests API </h3> <script> d3.csv("sample.csv", function(data) { console.log(data); }); </script> </body> </html> |
اکنون، از مرورگر درخواست کنید و پاسخ زیر را ببینید.
بعضی از متدهای درخواست API در D3 که بیشتر مورد استفاده قرار می گیرند به شرح زیر می باشند.
[(d3.request(url[, callback
[(request.header(name[, value
[(request.mimeType([type
[(request.user([value
[(request.password([value
[(request.timeout([timeout
[(request.get([data
[(request.post([data
[(request.send(method[, data
()request.abort
[(d3.csv(url[[, row], callback
اجازه دهید هر کدام را به طور مختصر بیان کنیم.
این متد یک درخواست جدید برای URL داده شده را باز می گرداند. اگر یک تماس تلفنی اختصاص داده شود، آن را به عنوان یک درخواست فراخوانی در نظر گرفته در غیر این صورت درخواست فراخوانی نمی شود.
1 2 | d3.request(url) .get(callback); |
شما می توانید برخی از پارامترهای پرس و جو را با استفاده از سینتکس زیر ارسال کنید.
1 2 3 4 | d3.request("/path/to/resource") .header("X-Requested-With", "XMLHttpRequest") .header("Content-Type", "application/x-www-form-urlencoded") .post("a = 2&b = 3", callback); |
اگر می خواهید یک درخواست header یا یک نوع MIME را مشخص کنید، نباید سازنده را فراخوانی کنید.
این برای تعیین مقدار برای درخواست header با نام مشخص شده استفاده می شود. اگر مقدار مشخص نشده باشد، درخواست header را با نام مشخص شده حذف می کند.
1 2 3 4 | d3.request(url) .header("Accept-Language", "en-US") .header("X-Requested-With", "XMLHttpRequest") .get(callback); |
در اینجا، درخواست X-Requested با Header به XMLHttpRequest یک درخواست پیش فرض است.
این متد برای اختصاص دادن نوع MIME به مقدار داده شده استفاده می شود. به مثال زیر توجه کنید.
1 2 3 | d3.request(url) .mimeType("text/csv") .get(callback); |
این متد برای تعیین نام کاربری برای احراز هویت استفاده می شود. اگر یک نام کاربری مشخص نشده باشد، به صورت پیش فرض صفر می شود.
اگر مقدار مشخص شده باشد، برای احراز هویت رمز عبور تعیین می کند.
اگر یک وقفه مشخص شده باشد، زمان را به تعداد مشخصی از میلی ثانیه تعیین می کند.
این متد برای ارسال درخواست با روش GET استفاده می شود.
1 | request.send("GET", data, callback); |
این متد برای ارسال درخواست با روش POST استفاده می شود و در قسمت زیر تعریف شده است.
1 | request.send("POST", data, callback); |
برای ارسال درخواست با استفاده از متدهای GET یا POST داده شده است.
این متد برای لغو درخواست استفاده می شود.
یک درخواست جدید برای فایل CSV را در آدرس مشخص شده با پیش فرض Mime type text / csv می پذیرد.
1 2 3 | d3.request(url) .mimeType("text/csv") .response(function(xhr) { return d3.csvParse(xhr.responseText, row); }); |
اگر یک فراخوانی مجدد را با متد POST مشخص کنید، نمونه آن در زیر تعریف شده است.
1 2 3 4 | d3.request(url) .mimeType("text/csv") .response(function(xhr) { return d3.csvParse(xhr.responseText, row); }) .post(callback); |
یک فایل CSV با نام “lang.csv” را در پوشه D3 خود ایجاد کنید و تغییرات زیر را به آن اضافه کنید.
1 2 3 4 | Year,Language,Author 1972,C,Dennis Ritchie 1995,Java,James gosling 2011,D3 js,Mike Bostock |
یک صفحه وب “csv.html” را ایجاد و اسکریپت زیرا به آن اضافه کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <!DOCTYPE html> <html> <head> <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script> </head> <body> <h3> D3.js request API</h3> <script> d3.csv("lang.csv", function(d) { return { year: new Date(+d.Year, 0, 1), // convert "Year" column to Date language: d.Language, author: d.Author, }; }, function(error, rows) { console.log(error); console.log(rows[0].year); }); </script> </body> </html> |
اکنون از مرورگر درخواست کنید و پاسخ زیر را مشاهده کنید.
درخواست API در D3.js نیز به اتمام رسید D3 خاصیت انعطاف پذیری برای ایجاد خواص پویا و داینامیک را در بیشتر توابع دارد. حتی ویژگی و Feature های یک نمودار می تواند به عنوان یک تابع تعریف شود و این بدان معناست که داده های شما می توانند سبک و استایل و ویژگی خاصی که مد نظر شماست را داشته باشند.