Je me demandais quelle serait la meilleure approche pour faire offrir une application de grails a API reposante (quelques actions de crud principalement) qui peuvent être utilisées par un service Web, par exemple. Lorsque vous souhaitez créer une application correspondante iOS à l'application de votre navigateur ou autre chose d'autre.
J'ai pensé à construire une partie distincte dans mon application Grails qui prend des appels de www.mywebapp.com/api/someAction
afin que je puisse réutiliser la couche de service. Comment ferais-je la mappage de l'URL alors? Avoir un grand ApiController
ne semble pas très groovy.
Ou y a-t-il une meilleure approche que je ne connaissais pas? Cette approche Doit Supporte quelque chose comme Oauth Pour authentifier l'utilisateur qui appelle le service Web.
la documentation de Grails a une bonne promenade sur la mise en place d'une API reposante
Vous pouvez le mapper de toute façon, utilisez n'importe quelle structure d'URL. Les grails urlmappe sont assez flexibles, ce n'est que le comportement par défaut de mapper pour /$controller/$action
, mais vous pouvez utiliser votre propre mappage, vous pouvez éventuellement cartographier chaque URL manuellement, etc.
Voir Urlmapping Docs - http://grails.org/doc/latest/guide/theweblayer.html#urlmappings
cartographie de l'URL:
"/ API/ELEMENT/$ Version/$ MASTER" {contrôleur = "élément" action = [Obtenez: "Afficher"]}
Cela fera mapper le HTTP d'arriver à la méthode Afficher l'élément du contrôleur.
Sec: L'API est probablement la même logique que l'application. La différence est la négociation de contenu.
...
def show = {
def elements = elementService.findByMasterVersion(params.master, params.version)
withFormat {
xml {
render(status:200,text:elements as XML, contentType:"text/xml",encoding:"UTF-8")
}
json { ... }
html { ... }
}
}