2009-07-04 10 views
5

Tôi đang tìm cách triển khai thương lượng nội dung trên một số tài nguyên trong ứng dụng Rails. Tôi đang sử dụng Mootools và có khả năng sẽ có thể tinh chỉnh loại nội dung được chấp nhận bởi XMLHTTPRequest thành "application/json".Đàm phán nội dung RESTful trong Rails

Có cách nào để nhận thông tin này trong bộ điều khiển của tôi và tạo phản hồi JSON thay vì XHTML không?

Tôi đang cố gắng để tránh làm điều gì đó như:

http://site/resource/1?format=JSON 

... vì nó gây bẩn lên URL của tôi, áp đặt một mức độ nhất định của sự dư thừa và không phải là linh hoạt.

Cảm ơn!

Trả lời

4

Bạn có thể sử dụng một đoạn thơ respond_to trong phương pháp điều khiển của bạn, như thế này:

respond_to do |format| 
    format.html { # Generate an HTML response... } 
    format.json { # Generate a JSON response... } 
end 

Rails xác định định dạng phản ứng dựa trên giá trị của HTTP Chấp nhận tiêu đề được gửi bởi các khách hàng.

1

Chắc chắn http://site/resource/1.json sẽ hoạt động? bạn có thể cần phải thiết lập nó trong môi trường Rails của bạn, tuy nhiên, tùy thuộc vào cách hiện tại phiên bản của Rails bạn có, tôi nghi ngờ nó.

0

Sau nhiều nghiên cứu, trong khi đường ray có mọi thứ để tự động chọn mẫu cho đầu ra, nó vẫn yêu cầu gọi tới số respond_to cho mỗi người bạn muốn hỗ trợ.

8

http://site/resource/1.json không sử dụng đúng cách thương lượng nội dung. Vấn đề là URL phải giữ nguyên, nhưng máy khách yêu cầu một biểu diễn cụ thể (JSON, PDF, HTML, vv) dựa trên các tiêu đề HTTP mà nó gửi cùng với yêu cầu.