使用NodeJS创建应用程序服务器端的最佳方法

时间:2013-10-22 02:11:37

标签: node.js express client socket.io

我正在为IOS构建一个应用程序,我想在我的服务器端使用NodeJS。服务器应该处理带有参数的请求,以修改或从mongodb数据库获取数据。我想就这样做的方法提出一些建议。我应该使用Socket.io还是表达路由足够好?

我开始使用快速路由,因为这应该是一种宁静。我在客户端使用方法和它的参数构建URL,并在服务器端的每个处理程序方法中路由和获取参数。我似乎可以使用Passport进行身份验证,所以这应该不是问题。我觉得奇怪的是请求URL如何通过如此多的参数变大...如果用户在其中一个参数中发送带有斜杠的字符串,那么可能会出现问题?

几乎忘了提及(如果这太愚蠢的话,请随意向我扔石头):我正在考虑将参数请求(在路由的情况下)作为字符串化的JSON传递......是不是很糟糕看起来呢?例如:

  • 获取用户数据:url/users/findById/{"userid":"21312313"}
  • 添加用户:url/users/addUser/{"name": "John", "lastname": "Foobar"}

我应该使用Socket.io吗?

请告知。

3 个答案:

答案 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类似的文章以获取更多信息