Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
rabl-old — Ruby-Templating-System zum Generieren von JSON- und XML-APIs, mit einem Fix für CVE-2014-4671. Unterstützt Partials, Vererbung und benutzerdefinierte Knoten für die flexible Konstruktion von API-Antworten. | Kitploit
Tools/GitHubGitHub/cph/rabl-old
Allgemeine DienstprogrammeSchwachstellenanalyseWebsicherheitAPI-SicherheitArchived
GitHubcph/rabl-old

rabl-old

Ruby-Templating-System zum Generieren von JSON- und XML-APIs, mit einem Fix für CVE-2014-4671. Unterstützt Partials, Vererbung und benutzerdefinierte Knoten für die flexible Konstruktion von API-Antworten.

Repository anzeigen
24vor 9 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

RABL

Continuous Integration status Dependency Status

RABL (Ruby API Builder Language) ist ein Rails- und Padrino Ruby-Template-System zum Generieren von JSON, XML, MessagePack, PList und BSON. Wenn ich die ActiveRecord-Methode 'to_json' verwende, wünsche ich mir eine ausdrucksstärkere und leistungsfähigere Lösung zum Erstellen von APIs. Dies gilt insbesondere dann, wenn die JSON-Darstellung komplex ist oder nicht dem exakten Schema entspricht, das in der Datenbank definiert ist.

Insbesondere möchte ich problemlos:

  • Beliebige Knoten erstellen, die auf der Kombination von Daten eines Objekts basieren
  • Argumente an Methoden übergeben und das Ergebnis als untergeordneten Knoten speichern
  • Partielle Templates rendern und vererben, um Code-Duplizierung zu reduzieren
  • Attribute umbenennen oder aliasieren, um den Namen vom Modell zu ändern
  • Attribute eines Kindes an einen übergeordneten Knoten anhängen
  • Knoten nur dann einfügen, wenn eine bestimmte Bedingung erfüllt ist

Jeder, der die in ActiveRecord verwendete 'to_json'-Methode zum Erstellen einer JSON-Antwort ausprobiert hat, hat den Schmerz dieses restriktiven Ansatzes gespürt. RABL ist ein allgemeines Template-System, das entwickelt wurde, um diese Probleme zu lösen, indem es die API-Antworterzeugung auf völlig neue Weise angeht.

RABL dreht sich im Kern darum, MVC-Prinzipien einzuhalten, indem die API-Datendarstellung an die View-Schicht Ihrer Anwendung delegiert wird. Eine Aufschlüsselung häufiger Missverständnisse über RABL finden Sie in unserem Leitfaden zum Verständnis von RABL, der helfen kann, etwaige Verwirrung über dieses Projekt zu beseitigen.

Breaking Changes

  • v0.8.0 (veröffentlicht am 14. Februar 2013) entfernt die multi_json-Abhängigkeit und verlässt sich auf Oj (oder JSON) als JSON-Parser. Vereinfacht den Code, entfernt eine Abhängigkeit, aber Sie sollten alle Verweise auf MultiJson entfernen.

  • v0.6.14 (veröffentlicht am 28. Juni 2012) erfordert die Verwendung von render_views mit RSpec, um Templates zu testen. Andernfalls gibt der Controller den Render-Befehl einfach durch, wie es bei ERB-Templates der Fall ist.

Installation

Installieren Sie RABL als Gem:``` gem install rabl

oder füge zu deiner Gemfile hinzu:```ruby
# Gemfile
gem 'rabl'
# Also add either `oj` or `yajl-ruby` as the JSON parser
gem 'oj'

und führe bundle install aus, um die Abhängigkeit zu installieren.

Wenn du Rails 2.3.8 (und höher), Rails 3.X oder Padrino verwendest, funktioniert RABL ohne Konfiguration.

Wichtig: Stelle bei Padrino sicher, dass das rabl-gem nach dem padrino-gem in deiner Gemfile aufgeführt ist, da sonst Rabl nicht ordnungsgemäß als Template-Engine registriert wird.

Mit Sinatra oder einem anderen tilt-basierten Framework registriere einfach:```ruby Rabl.register!

und RABL wird initialisiert und ist bereit zur Verwendung. Für die Nutzung mit Sinatra lesen Sie bitte die 
[Sinatra Nutzungsanleitung](https://github.com/nesquena/rabl/wiki/Setup-for-Sinatra).

## Übersicht ##

Sie können RABL verwenden, um JSON- und XML-basierte APIs aus einem beliebigen Ruby-Objekt zu generieren.
Mit RABL werden die Daten typischerweise hauptsächlich aus Modellen (ORM-unabhängig) abgeleitet und die Darstellung der API-Ausgabe wird in
einer View-Vorlage unter Verwendung einer einfachen Ruby-DSL beschrieben. Dies ermöglicht es Ihnen, Ihre Daten von dem JSON oder XML zu trennen, das Sie ausgeben möchten.

Sobald Sie RABL installiert haben (oben erläutert), können Sie eine RABL-View-Vorlage erstellen und dann die Vorlage
aus Ihren Sinatra-, Padrino- oder Rails-Anwendungen sehr einfach vom Controller (oder von der Route) aus rendern. Am Beispiel von [Padrino](http://padrinorb.com):
Angenommen, Sie haben ein `Post`-Modell mit Blogbeiträgen, können Sie eine API-Darstellung (sowohl JSON als auch XML) rendern, indem Sie eine Route erstellen:```ruby
# app/app.rb
get "/posts", :provides => [:json, :xml] do
  @user = current_user
  @posts = Post.order("id DESC")
  render "posts/index"
end

Dann können wir die folgende RABL-Vorlage erstellen, um die API-Ausgabe von @posts auszudrücken:```ruby

app/views/posts/index.rabl

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

Welches würde das folgende JSON oder XML ausgeben, wenn man `http://localhost:3000/posts.json` besucht.```js
[{  "post" :
  {
    "id" : 5, title: "...", subject: "...",
    "user" : { full_name : "..." },
    "read" : true
  }
}]

Das ist ein grundlegender Überblick, aber es gibt noch viel mehr zu sehen, wie z.B. partials, Vererbung, benutzerdefinierte Knoten usw. Lesen Sie die vollständigen Details zu RABL unten.

Konfiguration

RABL ist so konzipiert, dass es wenig bis gar keine Konfiguration benötigt, um zu funktionieren. Dies ist in den meisten Szenarien der Fall, aber abhängig von Ihren Bedürfnissen möchten Sie möglicherweise die folgenden globalen Konfigurationen in Ihrer Anwendung festlegen (dieser Block ist völlig optional):```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

Jede Option beschreibt das Verhalten in Bezug auf die Ausgabe von RABL. Wenn `include_json_root` deaktiviert ist, wird der Wurzelknoten für jedes Wurzelobjekt in der Ausgabe entfernt, und `enable_json_callbacks` aktiviert die Unterstützung für 'jsonp'-Callback-Ausgabe, wenn die eingehende Anfrage einen 'callback'-Parameter enthält.

Wenn `include_child_root` auf false gesetzt ist, enthalten untergeordnete Objekte in der Antwort standardmäßig keinen Wurzelknoten. Dies ermöglicht Ihnen, die gewünschte Antwortstruktur weiter zu verfeinern.

Wenn `cache_engine` gesetzt ist, sollten Sie es einer Klasse mit einer `fetch`-Methode zuweisen. Siehe die [Standard-Engine](https://github.com/nesquena/rabl/blob/master/lib/rabl/cache_engine.rb) für ein Beispiel.

Wenn `perform_caching` auf `true` gesetzt ist, wird Caching durchgeführt. Sie können diese Option ignorieren, wenn Sie Rails verwenden, sie entspricht dem Rails-`config.action_controller.perform_caching`

Wenn `cache_sources` auf `true` gesetzt ist, werden Template-Lookups zur Leistungssteigerung gecacht. Der Cache kann manuell zurückgesetzt werden, indem Sie `Rabl.reset_source_cache!` in Ihrer Anwendung ausführen.
Tool herunterladen