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

How to distinguish calls from mobile app and web browser in Node Js?

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

你是怎么做到的?

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

谢谢!

您还没有说明您是如何构建服务器端应用程序的,但通常的做法是使用客户端指定的 'user agent'。

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

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

// 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..."
}

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

您需要向您的请求添加一个额外的参数,比如 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')
})