ممکنه شما یک API توسعه داده باشید که توسط انواع دستگاه ها (مثل دسکتاپ و موبایل ها) مورد استفاده قرار میگیره اما در شرایطی قرار بگیرید که مثلا بخواهید قطعه ای از کد فقط برای مرورگرهای دسکتاپ و موبایل اجرا بشه و برای اپلیکیشن موبایل اتفاق نیافته. Http header ها کمک زیادی در این مورد نمی کنند پس باید دنبال یک راه بهتر باشیم. پرسش اصلی ما اینه که "چطور میتونیم بفهمیم چه نوع دستگاهی (Device) سرویس API ما رو صدا میزند؟" من یک ماژول node به اسم express-device رو پیدا کردم که دقیقا کاری که میخواهم رو انجام میده.
پس میتونیم از این ماژول به عنوان middleware در express استفاده کنیم تا نوع دستگاه رو در آبجکت request مشخص کنه.
ساخت فایل package.json
پروژه رو با دستور npm init شروع میکنیم تا فایل package.json ایجاد بشه.
نکته : برای اینکه سوال ها رو نپرسه از دستور npm init -yes استفاده کنید.
حالا که فایل رو آماده کردید ماژول های لازم رو نصب می کنیم. ما به دو ماژول express و express-device احتیاج داریم :
npm i --save express express-device
این فایل package.json من هست :
{
"name": "devicedetection",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.14.0",
"express-device": "^0.4.2"
}
}
سرور Node
میخواهیم یک سرور ساده express بسازیم که درخواست رو در hello/ بپذیره و پاسخی مثل Hi to Mobile یا web user بسته به نوع دستگاه بده.
این کد سرور ماست : فایل app.js
var express = require('express');
var app = express();
var device = require('express-device');
app.use(device.capture());
app.get('/hello',function(req,res) {
res.send("Hi to "+req.device.type.toUpperCase()+" User");
});
app.listen(3000);
console.log("Listening to Port 3000");
اگر شما آدرس localhost:3000/hello رو وارد کنید و اگر از دسکتاپ این کار رو انجام بدید پیام زیر رو مشاهده خواهید کرد :
و اگر با گوشی موبایل وارد صفحه شوید پیام زیر رو مشاهده میکنید :
همچنین این میتونه تبلت ها , تلویزیون ها و ربات ها رو هم تشخیص بده. شما میتونید بهش از طریق آبجکت request دسترسی داشته باشید. این فایل req.device هست :
{ parser:
DeviceParser {
options:
{ emptyUserAgentDeviceType: 'desktop',
unknownUserAgentDeviceType: 'phone',
botUserAgentDeviceType: 'bot',
carUserAgentDeviceType: 'car',
parseUserAgent: false },
make_sure_parser_was_executed: [Function],
get_model: [Function],
get_type: [Function] },
type: 'phone',
name: '' }
در قسمت type میتونید انواع دستگاه ها رو وارد کنید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید