如何在Node Js中区分来自移动应用程序和Web浏览器的呼叫?

时间:2018-11-19 00:45:26

标签: node.js server-side

我对服务器端编程还是有点陌生​​,因此决定开始练习移动应用程序编程。在NodeJS中,您使用postget方法,但是,我希望能够区分是请求移动应用程序(向其发送JSON而不是HTML),还是请求网络浏览器(向其发送HTML)页面。

您如何做到的?

您是否通过使用单独的网址(一个用于应用程序,一个用于浏览器)来实现此目的?如果是这样,我想解释一下。

谢谢!

2 个答案:

答案 0 :(得分:6)

您还没有说过如何构建服务器端应用程序,但是通常的方法是使用客户端指示的“用户代理”。

如果您使用的是Express,有一些模块可以简化此操作,例如https://www.npmjs.com/package/express-useragent

这为您提供了一个结构,该结构在isMobile参数中包含字段req

// req.useragent 
{
  "isMobile":false,
  "isDesktop":true,
  "isBot":false,
  .....
  "browser":"Chrome",
  "version":"17.0.963.79",
  "os":"Windows 7",
  "platform":"Microsoft Windows",
  "source":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.79..."
}

答案 1 :(得分:2)

简短的回答是您无法从服务器端确定它

您需要在请求中添加一个附加参数,例如client: 'app'client: 'browser',并在服务器端读取该参数并发送适当的响应。

类似的事情会起作用

app.get('/endpoint', function (req, res) {
  const shouldSendJSON = req.query.client && req.query.client === 'app'

  if (shouldSendJSON) {
    res.json({data: 'whatever you want to send'})
  }

  res.send('hello world')
})