Công ty của tôi sắp thiết kế lại một dự án lớn từ đầu. Chúng tôi hiện đang suy nghĩ về cách triển khai nhà cung cấp dữ liệu. Tôi đã sử dụng để tích hợp một số dịch vụ web trong vài tháng qua và khá giống như xử lý dữ liệu theo cách này. Vì vậy, tôi đã suy nghĩ về một thiết kế RESTful. Chúng tôi sẽ sử dụng ColdFusion 10 đi kèm với hỗ trợ REST, nhưng tôi thực sự không thích cấu trúc thành phần cần thiết cho nó.Trang web dựa trên REST trong ColdFusion
Lợi thế lớn nhất có lẽ là chúng tôi sẽ có thể sử dụng REST để cung cấp dữ liệu cho tất cả nền tảng của chúng tôi, đó là: trang web, trang web trên thiết bị di động và ứng dụng iOS/Android. Cách tiếp cận bảo mật của tôi sẽ như sau: Dữ liệu công khai có thể được truy cập bởi bất kỳ ai (rõ ràng). Chỉ có thể truy cập dữ liệu riêng tư bằng BasicAuth. Sử dụng BasicAuth cũng cho phép chúng tôi có vai trò người dùng với các cấp truy cập khác nhau. Việc ủy quyền sẽ được ngầm định và dựa trên phiên/đăng nhập.
<!--- 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)>
Sau đây là các câu hỏi mà đến tâm trí của tôi:
- Có thông minh để sử dụng phương pháp này REST của chung của tất cả mọi thứ trên mỗi trang duy nhất? (Sử dụng REST trên các trang web có bắt đầu không?)
- Yêu cầu HTTP cục bộ có ảnh hưởng đến hiệu suất và làm chậm trang tải không?
- BasicAuth có đủ để bảo vệ dữ liệu không? (Tôi chỉ cần thêm các tính năng bảo mật nhỏ, chẳng hạn như yêu cầu-spam vào bảo vệ)
- Tốt nhất là bạn nên tránh các phụ thuộc trong dịch vụ web như
/customer/
để truy cập dữ liệu?
Trên một số trang web khác (cũ) chúng tôi có nhà cung cấp dữ liệu dựa trên tệp (bao gồm và các thành phần chăm sóc truy cập cơ sở dữ liệu, v.v.), nhưng chúng tôi gặp phải một số vấn đề với các trang phức tạp hơn. quy trình) như xung đột tên thông qua các thành phần bao gồm, không trong suốt và nặng, trộn các thành phần mô hình/xem/điều khiển, v.v.
Câu hỏi này có thể phù hợp hơn cho [Lập trình viên StackExchange] (http://programmers.stackexchange.com/questions/tagged/coldfusion)? –
Cách tiếp cận của bạn là hợp lý và chia sẻ một số điểm chung với sản phẩm mà công ty của tôi đã phát triển nhằm mục đích này. SlashDB kết nối cơ sở dữ liệu với các ứng dụng web và di động được ủy quyền thông qua tự động tạo REST API. Hồ sơ StackOverflow của tôi có liên kết đến trang web, cũng xem blog ở đó cho một số video. –