Rails를 사용하여 웹 서비스를 통해 데이터를 JSON 형식으로 노출하려면 어떻게 해야 합니까?
-
09-06-2019 - |
문제
Rails를 사용하여 JSON으로 웹 서비스 클라이언트에 데이터를 반환하는 쉬운 방법이 있습니까?
해결책
Rails 리소스는 모델에 대한 RESTful 인터페이스를 제공합니다.어디 보자.
모델
class Contact < ActiveRecord::Base
...
end
노선
map.resources :contacts
제어 장치
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
따라서 이는 필요한 응답 유형을 얻기 위해 특별한 메소드를 정의할 필요 없이 API 인터페이스를 제공합니다.
예.
/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 Monkey는 여러분이 갖고 싶은 대부분의 것들을 패치합니다. #to_json
방법.
내 머릿속에서 해시, 배열 및 ActiveRecord 객체에 대해 이를 수행할 수 있으며 이는 원하는 사용 사례의 약 95%를 포괄해야 합니다.자신만의 사용자 정의 개체가 있는 경우 직접 작성하는 것이 쉽지 않습니다. to_json
데이터를 해시에 넣은 다음 JSON화된 해시를 반환할 수 있는 메서드입니다.
이 기능을 수행하는 플러그인이 있습니다.http://blog.labnotes.org/2007/12/11/json_request-handling-json-request-in-rails-20/
제가 알기로는 이 기능은 이미 Rails에 있습니다.하지만 해당 블로그 게시물을 보면 코드 예제와 설명이 있습니다.
ActiveRecord는 JSON과 상호 작용하는 메서드도 제공합니다.AR 객체에서 JSON을 생성하려면 object.to_json을 호출하면 됩니다.JSON에서 AR 개체를 생성하려면 새 AR 개체를 생성한 다음 object.from_json을 호출할 수 있어야 합니다.내가 이해하는 한, 이것은 나에게 효과가 없었습니다.