grails
Classi di dominio come risorse REST
Ricerca…
introduzione
Il modo più semplice per creare un'API RESTful in Grails è esporre una classe di dominio come risorsa REST. Questo può essere fatto aggiungendo la trasformazione grails.rest.Resource a qualsiasi classe di dominio.
Semplice API REST con graal
import grails.rest.*
@Resource(uri='/books')
class Book {
String title
static constraints = {
title blank:false
}
}
Semplicemente aggiungendo la trasformazione delle risorse e specificando un URI, la classe del dominio sarà automaticamente disponibile come risorsa REST nei formati XML o JSON. La trasformazione registrerà automaticamente la mappatura URL RESTful necessaria e creerà un controller denominato BookController.
Puoi provarlo aggiungendo alcuni dati di test a BootStrap.groovy:
def init = { servletContext ->
new Book(title:"The Stand").save()
new Book(title:"The Shining").save()
}
E poi colpendo l'URL http://localhost:8080/books/1
, che renderà la risposta come:
<?xml version="1.0" encoding="UTF-8"?>
<book id="1">
<title>The Stand</title>
</book>
Se cambi l'URL in http://localhost:8080/books/1.json
otterrai una risposta JSON come:
{"id":1,"title":"The Stand"}
Se si desidera modificare l'impostazione predefinita per restituire JSON anziché XML, è possibile farlo impostando l'attributo formats della trasformazione Resource:
import grails.rest.*
@Resource(uri='/books', formats=['json', 'xml'])
class Book {
...
}
Mappatura alle risorse REST
Se si preferisce mantenere la dichiarazione della mappatura URL nel file UrlMappings.groovy, rimuovere semplicemente l'attributo uri della trasformazione Risorsa e aggiungere la seguente riga a UrlMappings.groovy
sarà sufficiente:
"/books"(resources:"book")
Estendere la tua API per includere più endpoint diventa quindi banale:
"/books"(resources:"book") {
"/publisher"(controller:"publisher", method:"GET")
}
L'esempio sopra esporrà l'URI /books/1/publisher.
Aggiungi HTTPS al server Grails
I certificati SSL utilizzano qualcosa chiamato crittografia a chiave pubblica. È necessario utilizzare Https anziché Http per mantenere i dati protetti tra i server e migliorare la fiducia dei clienti. Per abilitare questa opzione in Grails, dobbiamo eseguire la nostra app in modo diverso. Il comando qui sotto:
grails run-app -https