0

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

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

差点忘了提(如果这太愚蠢了,请随意向我扔石头):我正在考虑将参数请求(在路由的情况下)作为字符串化 JSON 传递……它是否像看起来一样糟糕? 例如:

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

我应该改用 Socket.io 吗?

请指教。

4

3 回答 3

1

Socket.io 专为不同类型的通信而设计。简单地说,它有利于在服务器和客户端之间建立一个通信层,服务器也可以在没有请求的情况下发起消息。

您应该查看 RESTful API 模式。他们定义了一个良好的干净模式,以使用 HTTP 获取、更新、添加和删除数据,遵循适当的标准。例如,获取用户的信息将发送一个 get 请求到/users/id,添加用户将/users使用用户数据作为帖子正文中的 JSON 对象进行 POST。

我发现的大多数关于 RESTful API 的文章都不是很好,但我认为这应该足够了。

于 2013-10-22T05:34:47.990 回答
1

在 restAPI 中有一些常见的做法。
例如:

代替

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的文章

于 2013-10-22T05:49:29.883 回答
1

Socket.io 用于构建实时 nodejs 应用程序。如果你不是故意的,那么你可以简单地使用 expressjs web 框架来实现简单的 restful api,这也可以达到目的。

我觉得奇怪的是请求 URL 是如何在有这么多参数的情况下变大的……如果用户在其中一个参数中发送带有斜杠的字符串,可能会出现一些问题,不存在?

据我了解,您可以简单地将客户端参数放入encodeURIComponent方法中,该方法只需将其编码为 url 格式,所以不用担心。否则,您可以在服务器端快速路由中使用正则表达式

获取用户数据: url/users/findById/{"userid":"21312313"}

如果它是一个发布请求,您可以简单地接受服务器端的用户 IDreq.body['userid'] ,否则尝试使用 req.query ...

于 2013-10-22T04:44:57.807 回答