我对服务器端编程还是有点陌生,因此决定开始练习移动应用程序编程。在NodeJS中,您使用post
和get
方法,但是,我希望能够区分是请求移动应用程序(向其发送JSON而不是HTML),还是请求网络浏览器(向其发送HTML)页面。
您如何做到的?
您是否通过使用单独的网址(一个用于应用程序,一个用于浏览器)来实现此目的?如果是这样,我想解释一下。
谢谢!
答案 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')
})