web-dev-qa-db-fra.com

Implémentez A REST API dans une application Grails

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.

27
Sebastian Wramba

la documentation de Grails a une bonne promenade sur la mise en place d'une API reposante

http://grails.org/doc/latest/guide/webservices.html#13.1

6
nate_weldon

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

1
Igor Artamonov
  • 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.

  • c'est-à-dire la méthode de spectacle:

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 { ... }
    }
}
  • OAuth est assez compliqué pour mettre en œuvre et semble excédent pour beaucoup de situation.
1
moskiteau