Skip to content

Commit 85e7f26

Browse files
author
Chris Latimer
committed
Allow clients to use include query params to include related entities in response
1 parent d589ff8 commit 85e7f26

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

grails-app/controllers/org/gmobile/v2/PhoneController.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class PhoneController extends RestfulController<Phone> {
1717
def detail = params.detail ?: "complete"
1818
withFormat {
1919
json {
20-
respond(phone, [detail:detail])
20+
respond(phone, [detail:detail, include:params?.list('include')])
2121
}
2222
xml {
2323
XML.use(params?.detail?.toLowerCase() ?: "complete") {

src/groovy/org/gmobile/renderers/ApiRendererJson.groovy

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,24 @@ class ApiRendererJson<T> extends AbstractRenderer<T> {
3838
converter = context.arguments.paging as ApiJSON
3939
converter.renderPartial(writer)
4040
}
41+
42+
if(context.arguments?.include) {
43+
writer.key("include")
44+
writer.array()
45+
context.arguments?.include.each { includeProp ->
46+
JSON.use("compact") {
47+
converter = object.properties.get(includeProp) as ApiJSON
48+
}
49+
50+
writer.object()
51+
writer.key(includeProp)
52+
converter.renderPartial(writer)
53+
writer.endObject()
54+
55+
}
56+
writer.endArray()
57+
}
58+
4159
writer.endObject()
4260

4361
out.flush()

0 commit comments

Comments
 (0)