كيف يمكنني عرض البيانات بتنسيق JSON من خلال خدمة ويب باستخدام Rails؟
-
09-06-2019 - |
سؤال
هل هناك طريقة سهلة لإعادة البيانات إلى عملاء خدمة الويب في 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..بقدر ما فهمت، ولكن هذا لم ينجح بالنسبة لي.