gpt4 book ai didi

web-services - ColdFusion中基于REST的网站

转载 作者:行者123 更新时间:2023-12-04 05:22:56 25 4
gpt4 key购买 nike

我的公司即将从头开始重新设计一个大项目。我们目前正在考虑如何实现数据提供者。在过去的几个月里,我曾经集成一些 Web 服务,并且非常喜欢以这种方式处理数据。所以我在考虑一个 RESTful 设计。我们将使用带有 REST 支持的 ColdFusion 10,但我实际上不喜欢它所需的组件结构。

最大的优势可能是我们将能够使用 REST 为我们所有的平台提供数据,即:网站、移动网站和 iOS/Android 应用程序。我的安全方法如下:
任何人都可以访问公共(public)数据(显然)。
只能使用 BasicAuth 访问私有(private)数据。
使用 BasicAuth 还允许我们拥有具有不同访问级别的用户角色。授权将是隐式的,并且基于 session /登录。

<!--- server-side example to request customer information (private data, BasicAuth required) --->
<cfset requestedID = 123>
<cfhttp url="/customer/#requestedID#" method="get" username="#APPLICATION.REST_SYSTEMUSER#" password="#APPLICATION.REST_SYSTEMUSER_PW#">
<cfhttpparam type="url" name="includeAddresses" value="true">
</cfhttp>

<!--- successful response in JSON --->
{
"ID": 123,
"FirstName": "John",
"LastName": "Doe",
"Birthday": "1970-01-01",
"BillingAddress": {
"Receiver": "John Doe",
"Street": {
"Name": "Main Street",
"Number": "13",
"Addition": ""
}
"City": {
"ZipCode": "AB-123",
"Name": "Sampletown",
"District": ""
}
},
"ShippingAddresses": [
]
}

<!--- deserialize JSON and build an object to use server-side (the constructor wraps the data and adds functions to it) --->
<cfset customerJSON = deserializeJSON(CFHTTP.FileContent)>
<cfset customer = createObject("component", "Customer").init(customerJSON)>

这里是 问题 我想到了:
  • 将这种通用的 REST 方法用于所有内容是否明智?
    每一页? (在网站上使用 REST 开始是否明智?
    和?)
  • 本地 HTTP 请求是否会影响性能并减慢页面速度
    加载?
  • BasicAuth 是否足以保护数据? (我只会添加次要
    安全功能,例如请求垃圾邮件保护)
  • 是否最好避免在 web 服务中存在依赖关系,例如/customer/访问 /address/接收它的数据?

  • 在其他一些(较旧的)网站上,我们有基于文件的数据提供程序(包括和负责数据库访问等的组件),但我们遇到了一些更复杂的页面(例如结帐过程)的问题,例如名称冲突通过包括,不透明和沉重的组件,混合模型/ View / Controller 元素等。

    最佳答案

    这是我的答案,基于我最近所做的研究。我的公司正在研究新产品的开发,所以我问了很多和你一样的问题。 REST API 不仅支持前端,而且还成为其他应用程序的集成点,这一概念也非常吸引我们。我们为其他产品维护了一个单独的 API,如果您不小心,它很容易与主应用程序失去同步。

  • 使用 REST/单页方法是否明智?当然可以。许多大型网站都是这样工作的。似乎很常见的是一种混合方法,其中服务器可以为初始页面生成 HTML,可能显示 10 种产品),但移动到接下来的 10 种产品将通过 RESTful 调用和客户端呈现。这可能会为您带来最佳的客户体验,但构建两个不同的模板(服务器端模板和客户端模板)的成本很低。根据您的网站的工作方式和使用者,这可能需要也可能不需要。例如,GMail 是一个单页应用程序,但它是一个应用程序,您可以容忍它花几秒钟的时间向您显示加载栏,而在运行零售网站时,这种延迟可能是 Not Acceptable 。
  • 本地请求会减慢加载速度吗?您的意思是让您的网站进行 REST 调用以获取其数据,而不是直接访问数据库吗?在这种情况下,它会增加一些延迟,因为涉及到一个额外的网络跃点,但在一个设置良好的系统和部署中,我认为这种延迟可能是可控的。
  • HTTP 基础。我只会通过 HTTPS 考虑它。它只是通过 HTTP 不够安全。我在下面链接到的演示文稿中对此进行了介绍。
  • 相关数据。我也想知道这一点。我非常有帮助的是观看 presentation from StormPath ,其中涵盖了实现 RESTful API 时的许多问题和良好实践。它们涵盖了一种链接数据的方法(遵循 HATEOAS 原则)以及实体扩展,因此 GET 到 /customers/ID123?expand=address将返回客户的表示,但嵌入了他们的地址,这是避免多次往返以获取所需的所有数据的好方法。

  • 关于 CF10 的 REST 支持。我看着它,并没有那么热衷于它是如何工作的。我可能误解了它,但 REST 应用程序似乎与您尝试混合的任何类型的常规应用程序非常分离。 Railo 的实现看起来非常相似,但略有不同。当然,构建一个适用于两者的 REST 应用程序似乎相当棘手。你看过 Taffy有吗?我没有,但会对它的工作原理感兴趣。

    因为 REST 是一种架构风格,而不是一个严格的标准,所以对于你如何实现事物有很大的自由度,以及关于“最佳”方法的辩论/争论的空间很大

    关于web-services - ColdFusion中基于REST的网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16595442/

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