REST无状态与数据库

时间:2014-05-31 15:12:34

标签: rest web-applications stateless

有点背景故事

我必须为大学开发一个Web应用程序。此Web应用程序与使用谷歌地图管理不同位置有关,例如固定新位置以添加自定义描述等。登录部分使用facebook(使用facebook登录)完成。更有趣的部分是查询(客户端 - 服务器)必须通过使用REST来完成。

我试图理解的部分

如果我使用数据库存储我的用户的唯一ID,他们的在线状态(在线/离线)以及某种方式(实际上没有解决这个想法)在服务器上保留JSON包含每个用户的固定位置,所有这些实际上都适用于REST范例吗?

我在互联网上找到了混合的答案,我不知道如何正确地思考应用程序的无状态。不会创建会话,但是数据库中的凭据对于用户彼此通信是必要的。

问题的另一面

考虑到我错了,我不应该使用数据库存储这样的凭据和位置,我该如何保留所有数据?我认为像JSON这样的东西缓存在客户端,但如果我的客户改变了计算机,这是不是意味着他丢失了所有数据? (这也不会因为没有模特而导致MVC陷入困境吗?)我如何真正跟踪所有事情。

1 个答案:

答案 0 :(得分:1)

你这样做对自己太过刻板,尽量保持简单,因为你可能有一个截止日期。 REST是一种使用API​​与HTTP动词(如GET,POST,PUT和DELETE)的方式。它没有说明如何在API后面存储数据。

至于存储数据,数据库应该没问题。将它作为JSON存储在数据库中可能会起作用,但最终你每次要使用它时都必须解析json,所以我建议你将它存储在数据库中,以便它可以很容易阅读。

对于初学者(特别是如果你为学校项目做这个),我肯定建议你设置一个关系数据库,如Microsoft SQL数据库(Microsoft Stack),或MySQL / PosGres数据库(我认为这是他们在linux中使用的),但是如果你想跳过关系数据库方法(因为它可能不是那么容易“开始”),你总是可以尝试像MongoDB这样的NoSQL数据库。

帮助的相关链接:
http://rest.elkstein.org/(REST解释)
http://www.restapitutorial.com/lessons/httpmethods.html(REST动词)
http://en.wikipedia.org/wiki/Relational_database(什么是关系数据库)
http://en.wikipedia.org/wiki/Database_normalization(有点关系数据库的目标..但请注意,你可以走得太远...... http://lemire.me/blog/archives/2010/12/02/over-normalization-is-bad-for-you/
http://www.mongodb.com/nosql-explained(NoSQL解释)