我的公司即将从头开始重新设计一个大项目。我们目前正在考虑如何实现数据提供者。在过去的几个月里,我曾经集成一些 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 开始是否明智?
和?)
加载?
安全功能,例如请求垃圾邮件保护)
/customer/
访问 /address/
接收它的数据? 在其他一些(较旧的)网站上,我们有基于文件的数据提供程序(包括和负责数据库访问等的组件),但我们遇到了一些更复杂的页面(例如结帐过程)的问题,例如名称冲突通过包括,不透明和沉重的组件,混合模型/ View / Controller 元素等。
最佳答案
这是我的答案,基于我最近所做的研究。我的公司正在研究新产品的开发,所以我问了很多和你一样的问题。 REST API 不仅支持前端,而且还成为其他应用程序的集成点,这一概念也非常吸引我们。我们为其他产品维护了一个单独的 API,如果您不小心,它很容易与主应用程序失去同步。
/customers/ID123?expand=address
将返回客户的表示,但嵌入了他们的地址,这是避免多次往返以获取所需的所有数据的好方法。 关于 CF10 的 REST 支持。我看着它,并没有那么热衷于它是如何工作的。我可能误解了它,但 REST 应用程序似乎与您尝试混合的任何类型的常规应用程序非常分离。 Railo 的实现看起来非常相似,但略有不同。当然,构建一个适用于两者的 REST 应用程序似乎相当棘手。你看过Taffy有吗?我没有,但会对它的工作原理感兴趣。
因为 REST 是一种架构风格,而不是一个严格的标准,所以对于你如何实现事物有很大的自由度,以及关于“最佳”方法的辩论/争论的空间很大
关于web-services - ColdFusion中基于REST的网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16595442/