我正在为IOS构建一个应用程序,我想在我的服务器端使用NodeJS。服务器应该处理带有参数的请求,以修改或从mongodb数据库获取数据。我想就这样做的方法提出一些建议。我应该使用Socket.io还是表达路由足够好?
我开始使用快速路由,因为这应该是一种宁静。我在客户端使用方法和它的参数构建URL,并在服务器端的每个处理程序方法中路由和获取参数。我似乎可以使用Passport进行身份验证,所以这应该不是问题。我觉得奇怪的是请求URL如何通过如此多的参数变大...如果用户在其中一个参数中发送带有斜杠的字符串,那么可能会出现问题?
几乎忘了提及(如果这太愚蠢的话,请随意向我扔石头):我正在考虑将参数请求(在路由的情况下)作为字符串化的JSON传递......是不是很糟糕看起来呢?例如:
url/users/findById/{"userid":"21312313"}
url/users/addUser/{"name": "John", "lastname": "Foobar"}
我应该使用Socket.io吗?
请告知。
答案 0 :(得分:1)
Socket.io用于构建实时nodejs应用程序。如果你不吝啬,那么你可以简单地使用expressjs web框架来实现简单的restful api,这也是有用的。
我觉得奇怪的是请求URL如何通过如此多的参数变大...如果用户在其中一个参数中发送带有斜杠的字符串,那么可能会出现问题?
据我所知,你可以简单地将你的客户端参数放入encodeURIComponent
方法,它只是以url格式编码,所以不用担心。否则,您可以在服务器端快速路由使用正则表达式表达式。
获取用户数据:url / users / findById / {“userid”:“21312313”}
您可以使用req.body['userid']
在服务器端接受用户ID ,如果是帖子请求,请尝试使用req.query ...
答案 1 :(得分:1)
Socket.io专为不同类型的通信而设计。简而言之,在服务器和客户端之间建立通信层是很好的,其中服务器也可以在没有请求的情况下发起消息。
您应该查看RESTful API模式。他们定义了一个良好的干净模式,使用HTTP获取,更新,添加和删除数据,遵循适当的标准。例如,获取用户的信息将向/users/id
发送获取请求,添加用户将使用用户数据作为帖子正文中的JSON对象对/users
进行POST。
我发现的关于restful API的大多数文章都不太好,但我认为这应该是suffice。
答案 2 :(得分:1)
在其他API中,有一些常见的做法 例如:
而不是
url/users/findById/{"userid":"21312313"}
使用
GET url/users/findById/21312313
或
GET url/users/findById?userid=21312313
//you will think of other as
GET url/users/addUser?name=John&lastname=Foobar
//But it is wrong. While Adding things request should be handled by PUT or POST method not GET
//when doing PUT or POST sent parameters are not included in url
请参阅与http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api类似的文章以获取更多信息