Je voudrais savoir comment fournir une application Ruby avec une API REST. Je pourrais coder quelque chose basé sur l'API TCPServer de Ruby, mais cela semble un peu bas niveau. Pensez-vous que ce serait une bonne solution? Ou recommandez-vous une meilleure approche?Comment créer une API REST pour une application Ruby?
Répondre
Vous pouvez utiliser Sinatra pour écrire de très petites applications Web ciblées et des services REST légers très rapidement.
Dans la section documentation ils mettent en lumière quelques vidéos sur cette question:
Adam Wiggins et Blake Mizerany présent Sinatra et RestClient à RubyConf 2008. La conférence détaille la philosophie sous-jacente de Sinatra et réfléchit à l'utilisation de Sinatra pour créer des applications dans le monde réel. Adam Keys et The Pragmatic Programmers ont lancé une série de screencasts sur Sinatra. Les deux premiers épisodes couvrent la création d'une petite application web et la création d'un service REST. 5 $ par personne
Vous pouvez également utiliser rails aussi bien, mais c'est un peu exagéré ...
J'utilise Sinatra aussi pour développer des solutions simples REST.
La chose est Sinatra est si flexible à bien des égards. Vous pouvez construire votre structure de projet comme vous le souhaitez. Habituellement, nous avons un répertoire lib/tmp/et public/et un fichier config.ru et app.rb mais comme je le disais vous pouvez construire ce que vous voulez. Pour rappel, Sinatra n'est pas un MVC habituel juste parce que de M (modèle). Pour que vous puissiez utiliser sinatra pour les applications Web Simple CRUD, vous devez simplement charger une gemme.
require 'datamapper'
ou un autre de votre choix comme sqlite, sequel, ActiveRecord, ...
et voilá vous avez un ORM sous votre Sinatra.
Sous Sinatra vous définissez les routes qui obéissent à quatre principaux propose GET, PUT POST et DELETE.
require 'rubygems'
require 'sinatra'
get '/' do
erb :home
end
get '/API/*' do
api = params[:splat]
@command_test = api[0]
@command_helo = api[1]
#...
def do_things(with_it)
#...
end
#...
end
__END__
@@home
helo
bien vous avez obtenu le ideia :)
Enfin. Apprendre Sinatra n'est pas une perte de temps à cause de sa simplicité et parce qu'il me donne les bases de ce qu'est la programmation web. Je pense que dans un proche avenir, il sera possible d '"injecter" des applications Sinatra (Rack Apps) dans un projet Rails3.
Jetez un coup d'œil sur github, vous y trouverez beaucoup de projets réalisés avec Sinatra. Pour plus d'informations, veuillez contacter Sinatra :: Base.
Pour les API REST simples, je voudrais également envisager de travailler directement sur la bibliothèque Rack (c'est-à-dire que vous n'avez pas besoin d'un framework comme Sinatra). Routage par exemple peut être assez facile pour les cas simples. J'ai mis un petit exemple ici: https://gist.github.com/4685445
Plusieurs couches sont impliquées lors de la définition d'une API RESTful, et il existe plusieurs approches valables pour chaque couche.TCPServer est en effet de très bas niveau, puisque vous devrez implémenter vous-même le protocole HTTP, ce qui n'est pas recommandé.
Rack, qui prend en charge tous les détails HTTP de bas niveau, pourrait être amélioré. C'est ce que tous les frameworks web Ruby comme Rails, Sinatra ou Ramaze utilisent sous le capot. Il assure également que votre application fonctionne sur différents serveurs d'applications, tels que Passenger, Thin ou Unicorn.
Mais même Rack est encore bas niveau, il vous donne du HTTP, mais les frameworks de plus haut niveau sortent de la programmation web typique. Pour une API, vous pouvez regarder un cadre minimal comme Sinatra, ou un cadre spécialement conçu pour les API telles que Grape ou Rails::API. Ceux-ci supposeront déjà une API de style RESTful, donc vous devriez les trouver pour être un ajustement naturel.
Les API RESTful typiques sont caractérisées par des ressources identifiées par des URL supposées (conventionnelles) et des opérations basées sur des méthodes HTTP (verbes) telles que GET, POST, PUT, DELETE et PATCH. Pour vraiment embrasser l'esprit de REST tel qu'il a été décrit par Roy Fielding, vous pouvez vous diriger vers une API "Hypermedia" plus complète. La différence la plus visible est que les réponses sont plus autonomes. Ils sont de types média bien définis (définis par vous-même ou par des spécifications existantes) contenant des liens vers des ressources connexes, plutôt que simplement des identifiants numériques. De même, les réponses contiennent des modèles/formulaires décrivant les opérations qui peuvent être effectuées. (Il y a plus, mais sur le niveau de surface c'est ce que vous remarquerez.)
Cela rend l'API plus facile à découvrir, à la fois par les humains et les machines, et permet une plus grande liberté dans l'évolution de l'API. Il pourrait y avoir un inconvénient de performance, car un client devrait généralement faire plus de demandes pour obtenir la même chose, mais cela peut être évité par une conception et une mise en cache bien pensées. Garner est spécifiquement conçu pour faciliter la mise en cache côté serveur.
Vous pouvez définir vos propres types de médias qui conviennent à votre demande, souvent au-dessus de JSON ou XML, ou vous pouvez regarder les spécifications existantes, notamment Collection+JSON, HAL et JSON-API. Il semble que HAL ait la plus grande traction actuellement, avec several libraries disponible sur une variété de plates-formes. Il semble que rien ne se passe autour de JSON-API, mais deux projets signifacnt, ActiveModel :: Serializers et Ember-data, adoptent (et développent en même temps) ce format, ce qui signifie devenir un choix populaire dans le monde Ruby/Rails.
Modifier: faute de frappe
- 1. Comment créer une API ruby pour une application Java
- 2. Comment appeler une API REST?
- 3. Comment envoyer une requête REST (pour utiliser une API)?
- 4. Comment créer une API
- 5. Comment implémenter REST dans une application web?
- 6. Ruby: créer une application simple en Qt
- 7. Comment implémenter une API REST avec des données incluses dans Ruby on Rails?
- 8. MVC2 ou WCF pour une API REST XML/JSON?
- 9. Zend Framework + Une API pour mon application
- 10. Comment créer une application SaaS?
- 11. Ajouter une photo à Facebook avec l'API REST et Ruby
- 12. Quel modèle de conception implémenter pour utiliser une API REST?
- 13. Comment créer une application pour Mobile?
- 14. AJAX interrogeant longtemps une API REST/Memcached dans une application PHP
- 15. Comment puis-je accéder à une API REST sur l'iPhone?
- 16. Comment puis-je 'insérer' une petite application ruby dans Ruby on Rails pour créer une page web?
- 17. Créer une application Flash en utilisant WebOrb Ruby/Rails
- 18. Création d'une authentification API REST valide
- 19. (ruby) ruby sockets: comment créer une requête POST?
- 20. Comment créer une gemme ruby disponible pour mes scripts?
- 21. Ruby on Rails - différencier les ressources pluriel et singulier dans une API REST
- 22. Comment désinfecter les données utilisateur lors de l'intégration avec une API REST pour l'enregistrement et l'authentification?
- 23. Comment créer une enveloppe SOAP dans Ruby?
- 24. Pour créer une application pour un site Internet sans son API et schéma
- 25. Comment créer une application Web Spring 3 + Tiles 2 à l'aide d'URL REST-ful?
- 26. Comment configurer CMake pour créer une application pour l'iPhone
- 27. Comment organiser une application Shoes Ruby?
- 28. Comment désinstaller une application Ruby on Rails?
- 29. Comment emballer une application Ruby Gui?
- 30. Comment réduire la latence des données envoyées via une API REST
+1 pour Sinatra. –