Có cách nào dễ dàng để trả lại dữ liệu cho máy khách dịch vụ web trong JSON bằng Rails không?Làm cách nào để hiển thị dữ liệu ở định dạng JSON thông qua dịch vụ web bằng Rails?
Trả lời
Tài nguyên đường ray cung cấp giao diện RESTful cho mô hình của bạn. Hãy xem.
Mẫu
class Contact < ActiveRecord::Base
...
end
đường
map.resources :contacts
khiển
class ContactsController < ApplicationController
...
def show
@contact = Contact.find(params[:id]
respond_to do |format|
format.html
format.xml {render :xml => @contact}
format.js {render :json => @contact.json}
end
end
...
end
Vì vậy, điều này mang lại cho bạn một giao diện API mà không cần phải xác định phương pháp đặc biệt để có được các loại đáp ứng được yêu cầu
Ví dụ:
/contacts/1 # Responds with regular html page
/contacts/1.xml # Responds with xml output of Contact.find(1) and its attributes
/contacts/1.js # Responds with json output of Contact.find(1) and its attributes
Rails monkeypatches hầu hết mọi thứ bạn muốn quan tâm để có một phương pháp #to_json
.
Tắt đầu của tôi, bạn có thể làm điều đó cho các mảng băm, mảng và đối tượng ActiveRecord, bao gồm khoảng 95% trường hợp sử dụng mà bạn có thể muốn. Nếu bạn có các đối tượng tùy chỉnh của riêng bạn, nó là tầm thường để viết phương thức to_json
của riêng bạn cho chúng, mà chỉ có thể mứt dữ liệu thành một băm và sau đó trả về băm được jsonized.
monkeypatches? Tôi không biết điều đó có nghĩa là gì, nhưng tôi có thể đoán nó đề cập đến việc cung cấp phương thức đó cho hầu hết, nếu không phải tất cả, các đối tượng –
Nó đang vá một đối tượng hiện có, thêm phương pháp hoặc thay đổi nó nếu nó tồn tại. Nó thực sự chỉ là phần mở rộng ngôn ngữ động. –
Có một plugin mà chỉ này, http://blog.labnotes.org/2007/12/11/json_request-handling-json-request-in-rails-20/
Và từ những gì tôi hiểu chức năng này đã có trong Rails. Nhưng hãy xem bài đăng trên blog đó, có các ví dụ và giải thích mã.
ActiveRecord cũng cung cấp các phương thức tương tác với JSON. Để tạo JSON ra khỏi đối tượng AR, chỉ cần gọi object.to_json. Để tạo một đối tượng AR ra khỏi JSON, bạn sẽ có thể tạo một đối tượng AR mới và sau đó gọi object.from_json .. theo như tôi đã hiểu, nhưng điều này không làm việc cho tôi.
Câu trả lời hay! Nếu tôi có thể cập nhật nó lên Rails 3, phương thức json bây giờ có vẻ là to_json. Ít nhất đó là những gì làm việc cho tôi ... tức là @ contact.to_json – codedog