ResourceSupport์ ๋ฐ๋ ํด๋์ค๋ก ๊ฐ์ฒด์ ๋งํฌ์ ๋ณด๋ฅผ ์ถ๊ฐํด์ฃผ๊ธฐ ์ํด ์ง์ํ๋ ํด๋์ค
Copy public class EventResource extends RepresentationModel<EventResource> {
private Event event;
public EventResource(Event event) {
this.event = event;
}
public Event getEvent() {
return event;
}
}
Copy //controller์์ ์ด๋ ๋ฉ์๋ ์์ ์ฝ๋
EventResource eventResource = new EventResource(event);
eventResource.add(linkTo(EventController.class).withRel("query-events"));
์ด๋ ๊ฒ ๋ง ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด returnํ ๋ EventResource๋ฅผ returnํ๊ณ ์ด๋ฅผ Object Mapper
๊ฐ Serialization
์ ํ ๋ Bean Serialize
๋ฅผ ์ฐ๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ฒด๋ด์ ํ๋์ด๋ฆ์ ์ฌ์ฉํ๋๋ฐ ๊ทธ ํ๋(Event)๋ compose ๊ฐ์ฒด
์ด๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌํ๋๋ค์ ํ๋์ ๊ฐ์ฒด๋ก ๋ฌถ๊ณ ๋งํฌ๋ฅผ ๋ฐ๋ก ๋ถ๋ฆฌํ์ฌ responseํ๋ค.
Copy {
"event": {
"id": 1,
"name": "Spring",
"description": "rest api practice",
"beginEnrollmentDateTime": "2020-10-28T17:24:00",
"closeEnrollmentDateTime": "2020-11-28T17:33:00",
"beginEventDateTime": "2020-11-20T17:53:00",
"endEventDateTime": "2020-12-20T17:01:00",
"location": "๊ฐ๋จ์ญ",
"basePrice": 100,
"maxPrice": 200,
"limitOfEnrollment": 100,
"offline": true,
"free": false,
"eventStatus": null
},
"_links": {
"query-events": {
"href": "http://localhost/api/events"
},
"self": {
"href": "http://localhost/api/events/1"
},
"update-event": {
"href": "http://localhost/api/events/1"
}
}
}
Copy public class EventResource extends RepresentationModel<EventResource> {
@JsonUnwrapped
private Event event;
public EventResource(Event event) {
this.event = event;
add(linkTo(EventController.class).slash(event.getId()).withSelfRel()); //self link
}
public Event getEvent() {
return event;
}
}
Copy public class EventResource extends EntityModel<Event> {
public EventResource(Event event, Link... links){
super(event,links);
add(linkTo(EventController.class).slash(event.getId()).withSelfRel()); //self link
}
}
๊ทธ๋ฌ๋ฉด ์๋์ฒ๋ผ ํ ๊ฐ์ฒด ์์ ํ์๊ฐ ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
Copy {
"id": 1,
"name": "Spring",
"description": "rest api practice",
"beginEnrollmentDateTime": "2020-10-28T17:24:00",
"closeEnrollmentDateTime": "2020-11-28T17:33:00",
"beginEventDateTime": "2020-11-20T17:53:00",
"endEventDateTime": "2020-12-20T17:01:00",
"location": "๊ฐ๋จ์ญ",
"basePrice": 100,
"maxPrice": 200,
"limitOfEnrollment": 100,
"offline": true,
"free": false,
"eventStatus": null,
"_links": {
"query-events": {
"href": "http://localhost/api/events"
},
"self": {
"href": "http://localhost/api/events/1"
},
"update-event": {
"href": "http://localhost/api/events/1"
}
}
}