2012-09-27 42 views
8

Tôi hiện đang phát triển một ứng dụng web, phụ thuộc rất nhiều vào khách hàng trên thiết bị di động và máy tính để bàn tham khảo ý kiến ​​máy chủ web để biết thông tin. Điều này có thể được thực hiện độc đáo làm cho một RESTful API có sẵn để xử lý này. Vì vậy, ý tưởng của tôi là có một ứng dụng hoạt động như "nền tảng" xử lý tất cả các logic nghiệp vụ thực và thông tin cơ sở dữ liệu phía sau màn cửa.Trang web Symfony2 và RESTful API

Kế hoạch của tôi là tạo nền tảng bằng cách sử dụng các cơ chế xác thực của symfony2 và OAuth 2.0, được kết hợp với các dịch vụ web RESTful.

Bây giờ, sự pha loãng thực sự của tôi xuất hiện trên thành phần trang web. Lý tưởng nhất là tôi muốn nghĩ về trang web như một ứng dụng khách khác yêu cầu nền tảng REST này cho thông tin và hoàn toàn tách biệt nó khỏi nền tảng chính nó.

Để làm cho nó rõ ràng hơn một chút, giả sử chúng ta đang tạo blog với kiến ​​trúc này, vì vậy, chúng ta sẽ có "nền tảng/phụ trợ" cung cấp dịch vụ còn lại để liệt kê các bài viết, ví dụ:/articles/5 . Điều này trên backend, và với symfony2/doctrine có nghĩa là ứng dụng có một lớp mô hình Article, và chúng có thể được yêu cầu từ DB. Một truy vấn điều khiển đơn giản cho Điều số 5 và trả về tất cả thông tin ở định dạng JSON.

Bây giờ trang web trên ví dụ này có thể làm điều dễ dàng và cũng có một thực thể Điều và chỉ truy vấn cơ sở dữ liệu trực tiếp, nhưng tôi nghĩ nó sẽ sạch hơn nếu nó chỉ có thể nói chuyện với nền tảng thông qua REST api của nó sử dụng thông tin đó dưới dạng "phụ trợ" cho các thực thể.

Vì vậy, câu hỏi thực sự sẽ là, liệu có hỗ trợ kiểu thiết kế này bằng cách sử dụng symfony2 không? Có thực thể dựa vào một api REST cho các hoạt động CRUD? Hoặc tôi chỉ tốt hơn làm cho nền tảng/trang web một điều duy nhất và chia sẻ một "CoreBundle" với tất cả các thực thể chung chung?

+0

Bạn đã tìm thấy một giải pháp cho việc này? Tôi sẽ quan tâm. – sprain

+0

Thực ra tôi đã làm. Tôi đã kết thúc với việc có trang web là một khách hàng khác và yêu cầu dữ liệu từ nền tảng thông qua các yêu cầu http. Tôi đang sử dụng guzzle (với GuzzleBundle của riêng mình cho symfony2) để thực hiện các yêu cầu và tự động deserialize các phản hồi JSON thành các thực thể. Về phía web, tôi thực sự có các thực thể trùng lặp nhưng không có bất kỳ ánh xạ học thuyết nào và trong một số trường hợp, dữ liệu thực tế đã kết thúc khác nhau giữa thực thể nghiệp vụ thực tế trong phần phụ trợ so với dữ liệu cần thiết cho giao diện người dùng. Nếu đó là bất kỳ sự sử dụng nào đối với bạn, thì gói guzzle của tôi là https://github.com/xamado/guzzle-bundle – Xavier

+0

Cảm ơn! Vì vậy, bạn thực sự có hai yêu cầu cho mỗi yêu cầu trên trang web của bạn? Đây là điều tôi muốn tránh .. – sprain

Trả lời

1

Không có gì trong Symfony ngăn bạn thực hiện việc bạn muốn.

Ở phía máy khách, bạn có thể sử dụng Backbone.js hoặc Spine.js.

+0

Đoán rằng tôi quên đề cập rằng tôi dự định trang web cũng là một dự án symfony2, đó là câu hỏi của tôi về cách xử lý một trang web symfony2 nơi thực thể của nó đến từ một api REST và không, giả sử, học thuyết. – Xavier

Các vấn đề liên quan