grails
Klasy domen jako zasoby REST
Szukaj…
Wprowadzenie
Najłatwiejszym sposobem utworzenia interfejsu API RESTful w Grails jest udostępnienie klasy domeny jako zasobu REST. Można to zrobić, dodając transformację grails.rest.Resource do dowolnej klasy domeny.
Prosty interfejs API REST z grails
import grails.rest.*
@Resource(uri='/books')
class Book {
String title
static constraints = {
title blank:false
}
}
Po prostu dodając transformację zasobów i określając identyfikator URI, klasa domeny będzie automatycznie dostępna jako zasób REST w formacie XML lub JSON. Transformacja automatycznie zarejestruje niezbędne mapowanie adresów URL RESTful i utworzy kontroler o nazwie BookController.
Możesz to wypróbować, dodając niektóre dane testowe do BootStrap.groovy:
def init = { servletContext ->
new Book(title:"The Stand").save()
new Book(title:"The Shining").save()
}
A następnie naciśnięcie adresu URL http://localhost:8080/books/1
, co spowoduje wyświetlenie odpowiedzi:
<?xml version="1.0" encoding="UTF-8"?>
<book id="1">
<title>The Stand</title>
</book>
Jeśli zmienisz adres URL na http://localhost:8080/books/1.json
, otrzymasz odpowiedź JSON, taką jak:
{"id":1,"title":"The Stand"}
Jeśli chcesz zmienić wartość domyślną, aby zwracać JSON zamiast XML, możesz to zrobić, ustawiając atrybut formatów transformacji zasobów:
import grails.rest.*
@Resource(uri='/books', formats=['json', 'xml'])
class Book {
...
}
Mapowanie do zasobów REST
Jeśli wolisz zachować deklarację mapowania adresu URL w pliku UrlMappings.groovy, wystarczy po prostu usunąć atrybut uri transformacji zasobów i dodać następujący wiersz do UrlMappings.groovy
:
"/books"(resources:"book")
Rozszerzenie interfejsu API o więcej punktów końcowych staje się wtedy trywialne:
"/books"(resources:"book") {
"/publisher"(controller:"publisher", method:"GET")
}
Powyższy przykład ujawni URI /books/1/publisher.
Dodaj HTTPS do Grails Server
Certyfikaty SSL używają czegoś, co nazywa się kryptografią klucza publicznego. Musimy używać Https zamiast Http ze względu na bezpieczeństwo danych między serwerami i zwiększenie zaufania klientów. Aby włączyć tę opcję w Grails, musimy uruchomić naszą aplikację inaczej. Polecenie poniżej:
grails run-app -https