gpt4 book ai didi

json - 在 Web 应用程序中实现自定义 RESTful 接口(interface)时需要考虑哪些事项?

转载 作者:行者123 更新时间:2023-12-01 09:19:05 25 4
gpt4 key购买 nike

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

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

我看到的一个重要缺点是 Googlebot 很难为这种网站编制索引。该应用程序的几个组件应该像常规的已发布内容一样运行,这些内容可以毫无问题地出现在 Google 搜索结果中。例如,推特是如何做到这一点的?当网络爬虫访问他们的服务器时,他们会提供不同的页面吗?

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

最佳答案

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

首先,关于您的 Twitter 问题,他们使用 hashbang uri 样式。当你去 twitter.com/cx42net例如,您会自动重定向到 twitter.com/#!/cx42net .

当它是一个爬虫时,比如 Google 机器人,爬虫将通过 ?_escaped_fragment= 改变 #!。对于推特,结果将是:http://twitter.com/?_escaped_fragment=/cx42net .

我就不详细说了,为了避免说错,最好有一个好的链接,所以我们开始吧:SEOMoz: How To: Allow Google to Crawl your AJAX Content

现在,对于您的 RESTful 网络应用程序,我真的很喜欢将客户端与服务器分开的想法,我也尝试这样做。

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

  • “使用基本 HTTP 身份验证”学校
  • “使用 OAuth 身份验证/授权”学派

前者实现起来非常简单,但我建议您通过 HTTPS 来实现,因为密码是通过网络明文发送的。

后者很棒,但实现起来要复杂得多。

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

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

最后,我会引用Fred Wilson , 10 Golden Principles of Successful Web App是:

  • 速度
  • 即时实用程序
  • 少即是多
  • 使其可编程
  • 清洁
  • ...

好吧,现在就这样吧,如果我有任何其他想法,我会编辑答案并添加评论。

关于json - 在 Web 应用程序中实现自定义 RESTful 接口(interface)时需要考虑哪些事项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6190636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com