Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
rabl-old — Ruby टेम्पलेटिंग प्रणाली JSON और XML APIs उत्पन्न करने के लिए, CVE-2014-4671 के लिए एक सुधार के साथ। यह partials, inheritance, और custom nodes का समर्थन करता है लचीली API प्रतिक्रिया निर्माण के लिए। | Kitploit
उपकरण/GitHubGitHub/cph/rabl-old
सामान्य उपयोगिताएँभेद्यता विश्लेषणवेब सुरक्षाAPI सुरक्षाArchived
GitHubcph/rabl-old

rabl-old

Ruby टेम्पलेटिंग प्रणाली JSON और XML APIs उत्पन्न करने के लिए, CVE-2014-4671 के लिए एक सुधार के साथ। यह partials, inheritance, और custom nodes का समर्थन करता है लचीली API प्रतिक्रिया निर्माण के लिए।

रिपॉजिटरी देखें
239 साल पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

RABL

Continuous Integration status Dependency Status

RABL (Ruby API Builder Language) एक Rails और Padrino रूबी टेम्पलेटिंग सिस्टम है जो JSON, XML, MessagePack, PList और BSON उत्पन्न करने के लिए है। ActiveRecord की 'to_json' विधि का उपयोग करते समय, मैं API उत्पन्न करने के लिए एक अधिक अभिव्यक्तिशील और शक्तिशाली समाधान चाहता हूँ। यह विशेष रूप से तब सत्य है जब JSON प्रतिनिधित्व जटिल हो या डेटाबेस में परिभाषित सटीक स्कीमा से मेल न खाता हो।

विशेष रूप से, मैं आसानी से निम्नलिखित करना चाहता हूँ:

  • किसी वस्तु में डेटा को मिलाकर नामित मनमाने नोड बनाएँ
  • विधियों को तर्क पास करें और परिणाम को चाइल्ड नोड के रूप में संग्रहीत करें
  • कोड दोहराव को कम करने के लिए आंशिक टेम्पलेट प्रस्तुत करें और विरासत प्राप्त करें
  • मॉडल से नाम बदलने के लिए विशेषताओं का नाम बदलें या उपनाम दें
  • चाइल्ड से पैरेंट नोड में विशेषताएँ जोड़ें
  • केवल तभी नोड शामिल करें जब कोई निश्चित शर्त पूरी हुई हो

जिस किसी ने भी JSON प्रतिक्रिया उत्पन्न करने के लिए ActiveRecord में उपयोग की जाने वाली 'to_json' विधि का प्रयास किया है, उसने इस प्रतिबंधात्मक दृष्टिकोण का दर्द महसूस किया है। RABL एक सामान्य टेम्पलेटिंग सिस्टम है जो API प्रतिक्रिया पीढ़ी को पूरी तरह से नए तरीके से संबोधित करके इन समस्याओं को हल करने के लिए बनाया गया है।

RABL मूल रूप से MVC सिद्धांतों का पालन करने के बारे में है, API डेटा प्रस्तुतियों को आपके एप्लिकेशन के view परत पर स्थानांतरित करके। RABL के बारे में सामान्य गलतफहमियों के विवरण के लिए, कृपया RABL को समझना मार्गदर्शिका देखें, जो इस परियोजना के बारे में किसी भी भ्रम को दूर करने में मदद कर सकती है।

महत्वपूर्ण परिवर्तन

  • v0.8.0 (14 फरवरी 2013 को जारी) multi_json निर्भरता हटाता है और json पार्सर के रूप में Oj (या JSON) पर निर्भर करता है। कोड को सरल बनाता है, एक निर्भरता हटाता है लेकिन आप MultiJson के किसी भी संदर्भ को हटाना चाह सकते हैं।

  • v0.6.14 (28 जून 2012 को जारी) टेम्पलेट का परीक्षण करने के लिए RSpec के साथ render_views के उपयोग की आवश्यकता है। अन्यथा, नियंत्रक केवल रेंडर कमांड को पास कर देगा जैसे वह ERB टेम्पलेट्स के साथ करता है।

स्थापना

Install RABL as a gem:``` gem install rabl

या अपने Gemfile में जोड़ें:```ruby
# Gemfile
gem 'rabl'
# Also add either `oj` or `yajl-ruby` as the JSON parser
gem 'oj'

और निर्भरता स्थापित करने के लिए bundle install चलाएँ।

यदि आप Rails 2.3.8 (और उससे ऊपर), Rails 3.X या Padrino का उपयोग कर रहे हैं, तो RABL बिना कॉन्फ़िगरेशन के काम करता है।

महत्वपूर्ण: Padrino के साथ, सुनिश्चित करें कि rabl gem आपकी Gemfile में padrino gem के बाद सूचीबद्ध है, अन्यथा Rabl टेम्पलेट इंजन के रूप में ठीक से पंजीकृत नहीं होगा।

Sinatra, या किसी अन्य टिल्ट-आधारित फ्रेमवर्क के साथ, बस पंजीकृत करें:```ruby Rabl.register!

और RABL आरंभ होकर उपयोग के लिए तैयार होगा। Sinatra के साथ उपयोग के लिए, [Sinatra Usage](https://github.com/nesquena/rabl/wiki/Setup-for-Sinatra) गाइड देखें।

## अवलोकन ##

आप RABL का उपयोग किसी भी रूबी ऑब्जेक्ट से JSON और XML आधारित API उत्पन्न करने के लिए कर सकते हैं।
RABL के साथ, डेटा आमतौर पर मुख्य रूप से मॉडल (ORM-agnostic) से लिया जाता है और API आउटपुट का प्रतिनिधित्व एक साधारण रूबी DSL का उपयोग करके एक व्यू टेम्पलेट के भीतर वर्णित किया जाता है। यह आपको अपने डेटा को उस JSON या XML से अलग रखने की अनुमति देता है जिसे आप आउटपुट करना चाहते हैं।

एक बार जब आप RABL स्थापित कर लेते हैं (ऊपर समझाया गया), तो आप एक RABL व्यू टेम्पलेट बना सकते हैं और फिर टेम्पलेट को अपने Sinatra, Padrino या Rails एप्लिकेशन से कंट्रोलर (या रूट) से बहुत आसानी से रेंडर कर सकते हैं। उदाहरण के तौर पर [Padrino](http://padrinorb.com) का उपयोग करते हुए, यह मानते हुए कि आपके पास ब्लॉग पोस्ट से भरा एक `Post` मॉडल है, आप एक रूट बनाकर API प्रतिनिधित्व (JSON और XML दोनों) रेंडर कर सकते हैं:```ruby
# app/app.rb
get "/posts", :provides => [:json, :xml] do
  @user = current_user
  @posts = Post.order("id DESC")
  render "posts/index"
end

फिर हम @posts के API आउटपुट को व्यक्त करने के लिए निम्नलिखित RABL टेम्पलेट बना सकते हैं:```ruby

app/views/posts/index.rabl

collection @posts attributes :id, :title, :subject child(:user) { attributes :full_name } node(:read) { |post| post.read_by?(@user) }

जो `http://localhost:3000/posts.json` पर जाने पर निम्नलिखित JSON या XML आउटपुट करेगा```js
[{  "post" :
  {
    "id" : 5, title: "...", subject: "...",
    "user" : { full_name : "..." },
    "read" : true
  }
}]

यह एक बुनियादी अवलोकन है लेकिन देखने के लिए बहुत कुछ है जैसे कि partials, inheritance, custom nodes, आदि। नीचे RABL के पूरे विवरण पढ़ें।

कॉन्फ़िगरेशन

RABL को काम करने के लिए बहुत कम या बिना किसी कॉन्फ़िगरेशन की आवश्यकता होती है। अधिकांश परिदृश्यों में ऐसा ही होता है, लेकिन आपकी आवश्यकताओं के अनुसार आप अपने एप्लिकेशन में निम्नलिखित वैश्विक कॉन्फ़िगरेशन सेट करना चाह सकते हैं (यह ब्लॉक पूरी तरह से वैकल्पिक है):```ruby

config/initializers/rabl_init.rb

require 'rabl' Rabl.configure do |config|

Commented as these are defaults

config.cache_all_output = false

config.cache_sources = Rails.env != 'development' # Defaults to false

config.cache_engine = Rabl::CacheEngine.new # Defaults to Rails cache

config.perform_caching = false

config.escape_all_output = false

config.json_engine = nil # Class with #dump class method (defaults JSON)

config.msgpack_engine = nil # Defaults to ::MessagePack

config.bson_engine = nil # Defaults to ::BSON

config.plist_engine = nil # Defaults to ::Plist::Emit

config.include_json_root = true

config.include_msgpack_root = true

config.include_bson_root = true

config.include_plist_root = true

config.include_xml_root = false

config.include_child_root = true

config.enable_json_callbacks = false

config.xml_options = { :dasherize => true, :skip_types => false }

config.view_paths = []

config.raise_on_missing_attribute = true # Defaults to false

config.replace_nil_values_with_empty_strings = true # Defaults to false

end

प्रत्येक विकल्प RABL के आउटपुट से संबंधित व्यवहार निर्दिष्ट करता है। यदि `include_json_root` अक्षम किया जाता है तो वह आउटपुट में प्रत्येक मूल वस्तु के लिए रूट नोड को हटा देता है, और `enable_json_callbacks` इनकमिंग अनुरोध में 'callback' पैरामीटर होने पर 'jsonp' शैली कॉलबैक आउटपुट के लिए समर्थन सक्षम करता है।

यदि `include_child_root` को false पर सेट किया जाता है तो प्रतिक्रिया में चाइल्ड ऑब्जेक्ट्स डिफ़ॉल्ट रूप से रूट नोड शामिल नहीं करेंगे। यह आपको अपनी वांछित प्रतिक्रिया संरचना को और अधिक परिष्कृत करने की अनुमति देता है।

यदि `cache_engine` सेट किया गया है, तो आपको इसे `fetch` विधि वाले एक वर्ग को असाइन करना चाहिए। उदाहरण के लिए [डिफ़ॉल्ट इंजन](https://github.com/nesquena/rabl/blob/master/lib/rabl/cache_engine.rb) देखें।

यदि `perform_caching` को `true` पर सेट किया जाता है तो यह कैशिंग करेगा। यदि आप Rails का उपयोग कर रहे हैं तो आप इस विकल्प को अनदेखा कर सकते हैं, यह Rails के `config.action_controller.perform_caching` के समान है।

यदि `cache_sources` को `true` पर सेट किया जाता है, तो बेहतर प्रदर्शन के लिए टेम्पलेट लुकअप कैश किए जाएंगे। कैश को आपके एप्लिकेशन के भीतर `Rabl.reset_source_cache!` चलाकर मैन्युअल रूप से रीसेट किया जा सकता है।

यदि `cache_all_output` को `true` पर सेट किया जाता है, तो प्रत्येक टेम्पलेट जिसमें संग्रह के भाग के रूप में उपयोग किया जाने वाला प्रत्येक व्यक्तिगत टेम्पलेट शामिल है, अलग से कैश किया जाएगा। इसके अतिरिक्त, child, glue और partial के भीतर की कोई भी चीज़ भी अलग से कैश की जाएगी। केवल एकल टेम्पलेट को कैश करने के लिए, नीचे 'Caching' शीर्षक वाला अनुभाग देखें।

यदि `escape_all_output` को `true` पर सेट किया जाता है और ActiveSupport उपलब्ध है, तो विशेषता आउटपुट को [ERB::Util.html_escape](http://corelib.rubyonrails.org/classes/ERB/Util.html) का उपयोग करके एस्केप किया जाएगा। कस्टम नोड्स एस्केप नहीं होंगे, `ERB::Util.h(value)` का उपयोग करें।
टूल डाउनलोड करें