Json 在webapp中实现自定义RESTful接口时,需要考虑哪些事项?

Json 在webapp中实现自定义RESTful接口时,需要考虑哪些事项?,json,web-applications,rest,web-crawler,Json,Web Applications,Rest,Web Crawler,我目前正在探索构建一个不太复杂的web应用程序的不同选项,其中涉及一些基于角色的访问控制。此外,必须对少量(大约5个)不同的数据库表执行读/写操作 我一直在考虑创建一个基于JSON的API,其中一个或多个PHP文件作为数据库顶部的一个层。webapp本身将是完全“静态”的HTML和javascript,使用XHR从服务器检索数据,并最终将内容写回服务器。一个例子是当前的Twitter主页——当查看用户的时间线时,最初的HTML中实际上没有传递推文:所有推文都是由一些漂亮的javascript获取

我目前正在探索构建一个不太复杂的web应用程序的不同选项,其中涉及一些基于角色的访问控制。此外,必须对少量(大约5个)不同的数据库表执行读/写操作

我一直在考虑创建一个基于JSON的API,其中一个或多个PHP文件作为数据库顶部的一个层。webapp本身将是完全“静态”的HTML和javascript,使用XHR从服务器检索数据,并最终将内容写回服务器。一个例子是当前的Twitter主页——当查看用户的时间线时,最初的HTML中实际上没有传递推文:所有推文都是由一些漂亮的javascript获取的

我看到的一个重要缺点是,谷歌机器人很难为此类网站编制索引。应用程序的几个组件应该像普通的、发布的内容一样工作,这些内容可以毫无问题地出现在谷歌搜索结果中。例如,Twitter是如何实现这一点的?当网络爬虫接近他们的服务器时,他们是否提供不同的页面


另外,我想听听关于这个概念的一些想法。。。对我来说,这似乎是一种非常有趣和干净的方式,可以将业务逻辑与表示分离开来,但是,像往常一样,我可能会大错特错:-)

好吧,这是一个全球性的问题,需要一个大的答案:)

首先,关于你的Twitter问题,他们使用hashbang uri风格。 例如,当您转到时,系统会自动将您重定向到

当它是一个爬虫程序时,就像谷歌机器人一样,爬虫程序会改变通过
?\u转义\u片段=
。 对于twitter,结果是:

我将不深入讨论细节,为了避免出现错误,最好有一个好的链接,因此我们开始:

现在,对于RESTful中的web应用程序,我非常喜欢将客户端与服务器分离的想法,我也尝试这样做

您正在谈论基于角色的访问,这意味着您必须识别您的用户,以便允许/拒绝访问api的某些部分。 关于如何在API上对用户进行身份验证,有两所学校:

  • “使用基本HTTP身份验证”学校
  • “使用OAuth认证/授权”学校
前者实现起来非常简单,但我建议您通过HTTPS实现,因为密码是通过网络发送的

后者很棒,但实现起来更复杂

但事实上,它可能正是您想要的,因为尽管您对用户进行了身份验证,但您可以让他们访问API的某些部分,并将其限制在其他部分。一个常见的例子是Facebook/Twitter是如何工作的,我相信你已经允许第三方应用程序使用你的Twitter/Facebook帐户

现在,使用OAuth通常会强制您在数据库中存储一个登录/密码表。您可以使用OpenID,但这比简化用户更令人头痛: 您必须从OpenId提供程序(如Google)对它们进行身份验证,然后重定向到允许访问的API(如果是第一次),然后将用户重定向到应用程序

最后,我要引用的是:

  • 速度
  • 即时效用
  • 少就是多
  • 使其可编程
  • 干净的
好吧,现在就这样吧,如果我有任何其他想法,我会编辑答案并添加评论