شناسایی نوع دستگاه در ExpressJS

ترجمه و تالیف : امیررضا سیستانه ای
تاریخ انتشار : 13 خرداد 98
خواندن در 49 ثانیه
دسته بندی ها : جاوا اسکریپت , نود جی اس

ممکنه شما یک 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

شناسایی نوع دستگاه در ExpressJS

این فایل 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 رو وارد کنید و اگر از دسکتاپ این کار رو انجام بدید پیام زیر رو مشاهده خواهید کرد :

شناسایی نوع دستگاه در ExpressJS

و اگر با گوشی موبایل وارد صفحه شوید پیام زیر رو مشاهده میکنید :

شناسایی نوع دستگاه در ExpressJS

همچنین این میتونه تبلت ها , تلویزیون ها و ربات ها رو هم تشخیص بده. شما میتونید بهش از طریق آبجکت 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 میتونید انواع دستگاه ها رو وارد کنید.

منبع

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر لازم است ابتدا وارد سایت شوید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید