grails
Domänklasser som REST-resurser
Sök…
Introduktion
Det enklaste sättet att skapa ett RESTful API i Grails är att exponera en domänklass som en REST-resurs. Detta kan göras genom att lägga till grails.rest.Resource transformation till valfri domänklass.
Enkelt REST-API med gral
import grails.rest.*
@Resource(uri='/books')
class Book {
String title
static constraints = {
title blank:false
}
}
Genom att lägga till resursomvandlingen och ange en URI kommer din domänklass automatiskt att vara tillgänglig som en REST-resurs i antingen XML- eller JSON-format. Transformationen registrerar automatiskt den nödvändiga RESTful URL-mappningen och skapar en controller som heter BookController.
Du kan prova det genom att lägga till lite testdata till BootStrap.groovy:
def init = { servletContext ->
new Book(title:"The Stand").save()
new Book(title:"The Shining").save()
}
Och slå sedan URL: en: http://localhost:8080/books/1
, vilket ger svaret som:
<?xml version="1.0" encoding="UTF-8"?>
<book id="1">
<title>The Stand</title>
</book>
Om du ändrar URL till http://localhost:8080/books/1.json
får du ett JSON-svar som:
{"id":1,"title":"The Stand"}
Om du vill ändra standard för att returnera JSON istället för XML, kan du göra det genom att ställa in formattributet för Resursomvandlingen:
import grails.rest.*
@Resource(uri='/books', formats=['json', 'xml'])
class Book {
...
}
Kartlägga till REST-resurser
Om du föredrar att behålla deklarationen för URL-mappningen i din UrlMappings.groovy-fil, räcker det helt enkelt med att ta bort uri-attributet för resursomvandlingen och lägga till följande rad till UrlMappings.groovy
:
"/books"(resources:"book")
Att utöka ditt API så att det inkluderar fler slutpunkter blir då trivialt:
"/books"(resources:"book") {
"/publisher"(controller:"publisher", method:"GET")
}
Exemplet ovan exponerar URI /books/1/publisher.
Lägg till HTTPS till Grails Server
SSL-certifikat använder något som kallas kryptografi för offentlig nyckel. Vi måste använda Https istället för Http på grund av att hålla data säkra mellan servrar och förbättra kundernas förtroende. För att aktivera det här alternativet i gral måste vi köra vår app annorlunda. Kommandot nedan:
grails run-app -https