شناسایی نوع دستگاه در ExpressJS
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 2 دقیقه

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

ممکنه شما یک 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 میتونید انواع دستگاه ها رو وارد کنید.

منبع

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
در انتظار ثبت رای

دیدگاه و پرسش

برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید ورود یا ثبت‌نام

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

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

مقالات برگزیده

مقالات برگزیده را از این قسمت میتوانید ببینید

مشاهده همه مقالات