Comment créer une API REST pour une application Ruby?
Je voudrais savoir comment offrir une application Ruby avec une API REST. Je pourrais coder quelque chose basé sur Ruby TCPServer API, mais cela semble un peu faible niveau. Pensez-vous que ce serait une bonne solution? Ou recommandez-vous une meilleure approche?
OriginalL'auteur StackedCrooked | 2009-11-02
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser Sinatra à l'écriture minuscule, le web axé sur les applications et léger REPOS des services très rapidement.
Dans le la documentation section ils mettent en évidence un couple de vidéos sur le sujet:
Adam Wiggins et Blake Mizerany présent Sinatra et RestClient à RubyConf 2008. Le parler des détails Sinatra philosophie sous-jacente et reflète sur l'utilisation de Sinatra à construire des applications du monde réel.
Adam Clés et de La Pragmatique, les Programmeurs ont commencé une série de screencasts sur Sinatra. Les deux premiers épisodes de la couverture de la création d'une petite application web et de la création d'un service REST. De 5 $un pop.
Vous pouvez également utiliser rails ainsi, mais c'est un peu exagéré...
OriginalL'auteur Filipe Miguel Fonseca
Il y a plusieurs couches impliqués lors de desiging une API RESTful, et au niveau de chaque couche il y a plusieurs approches valables.
TCPServer est en effet très faible niveau de, depuis que vous auriez à mettre en œuvre le protocole HTTP, vous-même, ce qui n'est pas recommandé.
À une seule étape serait Rack, qui prend soin de tous les bas-niveau HTTP détails. C'est ce que tous les Rubis frameworks web comme des Rails, Sinatra ou Ramaze utiliser sous le capot. Il assure également que votre application fonctionne sur différents serveurs d'applications, comme Passager, Mince ou Licorne.
Mais même Rack est encore faible, il vous donne HTTP, mais de plus haut niveau des cadres de prendre le passe-partout de typique de la programmation web. Pour une API vous pouviez regarder un cadre minimal comme Sinatra, ou un cadre spécialement conçu pour les Api comme Raisin ou Rails::API. Ces assument déjà une RESTful API de style, de sorte que vous devriez trouver un ajustement naturel.
Typique RESTful Api sont caractérisés par les ressources identifiées par les deviner (convention) les Url et les opérations sur ceux basés sur des méthodes HTTP (verbes) GET, POST, PUT, DELETE et PATCH. Pour vraiment embrasser l'esprit de REPOS, comme il a été décrit par Roy Fielding cependant, vous pourrait aller vers une plus complète "Hypermédia" de l'API. La différence la plus évidente est que les réponses sont plus autonomes. Ils sont bien définies types de médias (définie par vous-même ou par des spécifications existantes) contenant des liens vers des ressources connexes, plutôt que de simplement numérique de l'ids. De même, les réponses contiennent des modèles et des formulaires de décrire les opérations qui peuvent être effectuées. (Il n'y a plus que ça, mais sur le niveau de la surface c'est ce que vous verrez.)
Cela rend l'API de plus détectable, à la fois par les humains et les machines, et il permet une plus grande liberté dans l'évolution de l'API. Il pourrait y avoir une performance inconvénient, car un client généralement besoin de faire plus de demandes pour obtenir la même chose, mais cela peut être évité par bien pensé de la conception et de la mise en cache. Garner est spécialement conçu pour fournir la facilité de serveur de mise en cache côté.
Vous pouvez définir vos propres types de supports en fonction de votre application, généralement sur le dessus de JSON ou XML, ou vous pouvez regarder les spécifications existantes, notamment Collection+JSON, HAL et JSON API. Il semble pour l'instant HAL a la plus grande traction, avec plusieurs bibliothèques disponibles sur une variété de plates-formes.
Il n'y a apparemment pas beaucoup qui se passe autour de JSON API, mais deux signifacnt projets, Activerecord::Sérialiseurs et Ember-data, sont à la fois l'adoption (et dans le même temps, le développement) ce format, ce qui signifie qu'il pourrait devenir un choix populaire dans le Ruby/Rails de monde.
Modifier : faute de frappe
OriginalL'auteur Arne Brasseur
Je suis en utilisant Sinatra trop à développer le REPOS simple des solutions.
La chose est Sinatra est très flexible dans de nombreuses façons. Vous pouvez construire votre projet de structure de la façon dont vous l'aimez plus. En général, nous avons une lib/tmp/public/répertoires et un config.ru et app.rb fichiers, mais comme je l'ai sayd vous pouvez construire ce que vous voulez.
À retenir est que Sinatra n'est pas une habitude MVC tout simplement parce que de M (modèle). Pour vous d'utiliser sinatra pour de Simples CRUD des applications web, vous devez tout simplement de charger un bijou.
require 'datamapper'
ou autres de votre choix comme
sqlite, sequel, ActiveRecord, ...
et voilá que vous avez obtenu un ORM sous votre Sinatra.
Sous Sinatra vous définir des itinéraires qui obéissent à quatre principaux propose d'OBTENIR, METTRE des POST et SUPPRIMER.
bien tu as le ideia 🙂
Enfin. L'apprentissage Sinatra n'est pas une perte de temps en raison de sa simplicité et parce qu'il donne (moi) fondements de ce que la programmation web.
Je pense que Dans un proche avenir, il sera possible de "injecter" Sinatra apps (Rack Apps) dans un Rails3 projet.
Jeter un oeil sur github, vous y trouverez de nombreux projet construit avec Sinatra.
Pour plus de la lecture de la caisse Sinatra::Base.
OriginalL'auteur include
Pour la simple Api REST je voudrais également envisager de travailler directement sur le Rack de la bibliothèque (c'est à dire vous ne pouvez pas besoin d'un framework comme Sinatra). De routage, par exemple, peut être assez facile pour les cas simples. J'ai mis en place un petit exemple ici: https://gist.github.com/4685445
OriginalL'auteur Peter Marklund