كيف يمكنني عرض البيانات بتنسيق JSON من خلال خدمة ويب باستخدام Rails؟

StackOverflow https://stackoverflow.com/questions/57665

سؤال

هل هناك طريقة سهلة لإعادة البيانات إلى عملاء خدمة الويب في JSON باستخدام Rails؟

هل كانت مفيدة؟

المحلول

يوفر مورد 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 طريقة خاصة بهم، والتي يمكنها فقط تشويش البيانات في تجزئة ثم إرجاع التجزئة jsonized.

هناك مكون إضافي يفعل هذا بالضبط،http://blog.labnotes.org/2007/12/11/json_request-handling-json-request-in-rails-20/

ومن ما أفهمه، فإن هذه الوظيفة موجودة بالفعل في Rails.لكن اذهب لرؤية منشور المدونة هذا، حيث توجد أمثلة وتفسيرات للتعليمات البرمجية.

يوفر ActiveRecord أيضًا طرقًا للتفاعل مع JSON.لإنشاء JSON من كائن AR، ما عليك سوى استدعاء object.to_json.لإنشاء كائن AR من JSON، يجب أن تكون قادرًا على إنشاء كائن AR جديد ثم استدعاء object.from_json..بقدر ما فهمت، ولكن هذا لم ينجح بالنسبة لي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top