Ich habe gelesen und ich fand diese micro-framework called Grape für Rubin. Ich benutze derzeit Sinatra, um die Webschnittstelle zu handhaben, aber ich möchte auch Grape implementieren, um den API-Aspekt der App zu behandeln. Ich kann keine hilfreichen Vorschläge zu diesem Thema finden. Die Weintrauben-Dokumentation sagt: "Grape ist ein REST-ähnliches API-Mikroframework für Ruby. Es wurde entwickelt, um auf Rack zu laufen oder bestehende Webanwendungsframeworks wie Rails und Sinatra zu ergänzen, indem es ein einfaches DSL bereitstellt, um einfach RESTful-APIs zu entwickeln." Es klingt also so, als müsste es eine offizielle Art geben, beide zu kombinieren, oder? Diese App wird auch auf Heroku laufen.Sinatra und Grape API zusammen?
Antwort
Die Phrasen Sie suchen sind:
- mehreren Rack-Anwendungen
- Rack-Middleware
- Mapping Urls sinatra
diese Art der Sache Rack. Grape, Sinatra und Rails sind alle Rack apps. Dies bedeutet, dass Sie Ihre Grape-App, Ihre Sinatra-App und Ihre Rails-App erstellen können und dann Rack verwenden können, da sie alle Rack-kompatibel sind, da sie eine -Schnittstelle teilen.
Was dies bedeutet in der Praxis ist, schreiben Sie die Anwendungen, und dann legen Sie sie in eine Rackup Datei, um sie auszuführen. Ein kurzes Beispiel unter Verwendung von 2 Sinatra-Anwendungen (aber sie könnte ein beliebige Anzahl von jeder Art von Rack-Anwendungen sein):
# app/frontend.rb
require 'sinatra/base'
# This is a rack app.
class Frontend < Sinatra::Base
get "/"
haml :index
end
end
__END__
@@ layout
%html
= yield
@@ index
%div.title This is the frontend.
# app/api.rb
# This is also a rack app.
class API < Sinatra::Base
# when this is mapped below,
# it will mean it gets called via "/api/"
get "/" do
"This is the API"
end
end
# config.ru
require_relative "./app/frontend.rb"
require_relative "./app/api.rb"
# Here base URL's are mapped to rack apps.
run Rack::URLMap.new("/" => Frontend.new,
"/api" => Api.new)
Wenn Sie das Twitter-API Beispiel aus der Traube README hinzufügen wollen:
# app/twitter_api.rb
module Twitter
# more code follows
# config.ru
require_relative "./app/twitter_api.rb" # add this
# change this to:
run Rack::URLMap.new("/" => Frontend,
"/api" => API,
"/twitter" => Twitter::API)
Hoffentlich ist das genug, um Sie zu beginnen. Es gibt viele Beispiele, wenn Sie wissen, wo Sie suchen müssen. Sie können auch andere Anwendungen innerhalb einer Sinatra-App mit use
(siehe http://www.sinatrarb.com/intro#Rack%20Middleware) laufen lassen und ich sehe, dass Grape das mount
Schlüsselwort auch anbietet. Es gibt viele Möglichkeiten, die zunächst etwas verwirrend sein können, aber probieren Sie sie einfach aus und sehen Sie, was sie tun und was Ihnen am besten gefällt. Ein großer Teil davon ist Präferenz, also haben Sie keine Angst zu gehen, was sich richtig anfühlt. Ruby ist für die Menschen mehr als der Computer :)
Edit: A Sinatra App mit einer Traube App "innen"
class App < Sinatra::Base
use Twitter::API
# other stuff…
end
# config.ru
# instead of URLMap…
map "/" do
run App
end
Ich glaube, es so etwas wie das sein wird.
Hallo vielen Dank für Ihre Antwort. Wie kann ich diese Methode verwenden, aber muss meine API vom root/auch laufen? –
@CristianRivera Ich habe ein Beispiel hinzugefügt, das ich _believe_ werde, wie es geht. So würde es mit anderen Rack-Apps und Sinatra funktionieren. – iain
Hallo, ich habe versucht, was Sie vorgeschlagen, und ich habe "Interner Server Fehler" in meinem Browser, in den Serverprotokollen habe ich "!! Unerwarteter Fehler bei der Verarbeitung der Anfrage: falsche Anzahl von Argumenten (1 für 0)" –
- 1. CORS Problem mit Grape API und Heroku
- 2. Grape API Speichern serialisierten Attribut
- 3. API-Authentifizierung für Sinatra
- 4. Sinatra - API - Authentifizierung
- 5. Rails Grape API Seitenumbruch mit AMS und benutzerdefinierten JSON
- 6. Grape API und Ruby on Rails App auf Heroku
- 7. Wie wird die Authentifizierungstokenfolge in Grape API und token_and_options behandelt?
- 8. Grape Fehlerbehandlung Strategie?
- 9. Sinatra Build REST API Dokumentation
- 10. Erste Schienen-api und strong_parameters arbeiten zusammen
- 11. Ich kann nicht verstehen, Grape API Route param
- 12. Testen Grape api. ActionController :: TestCase @controller ist null
- 13. Microservice sinatra app und autorisierung über json api
- 14. Authentifizierung für Sinatra REST API App
- 15. Groovy's Grape Going!
- 16. Sinatra und Fragezeichen
- 17. Sinatra und Rack Schutzeinstellung
- 18. Ruby und Sinatra
- 19. Benutzer Grape Entity mit Arrays
- 20. REST API zusammen mit Websocket API
- 21. Grape: Rettung von ungültiger JSON
- 22. Fügen Sie benutzerdefinierte Antwort Header mit Rack-Cors und Grape
- 23. Mit oder und zusammen in Loopback erholsamer api Filter
- 24. Mit Cordova Google Maps Plugin und Google Orte API zusammen
- 25. Verwenden Sie Record und Dial zusammen in Twilio API
- 26. Aws Lambda/Api-Gateway/Cognito arbeitet zusammen
- 27. sinatra + mongoid
- 28. Wie teste ich meine JSON API mit Sinatra + rspec
- 29. Wie verstecken API-Schlüssel mit Sinatra Juwel mit Ruby
- 30. Schienen 4.2 - Grape - IOError: Nicht zum Lesen geöffnet
Ich stieß auf diese [http://www.slideshare.net/yorzi/rapid-rubyapiongrape-8674582], die vielleicht etwas nützlich sein könnte – SMT