如何在 Node Js 中区分来自移动应用程序和 Web 浏览器的调用?
How to distinguish calls from mobile app and web browser in Node Js?
我对服务器端编程还是有点陌生,因此决定开始练习移动应用程序编程。在 NodeJS 中,您使用 post
和 get
方法,但是,我希望能够区分移动应用程序是否请求(发送 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')
})
我对服务器端编程还是有点陌生,因此决定开始练习移动应用程序编程。在 NodeJS 中,您使用 post
和 get
方法,但是,我希望能够区分移动应用程序是否请求(发送 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')
})