Reputation: 23
Following is the body of POST
request to my endpoint:
{
"availabilityMap":
{
"2021-07-18":["9AM-10AM", "OT"],
"2021-07-19":["9AM-10AM", "OPD"],
.
.
}
}
and following is the skeleton of my controller:
@PostMapping(value = "/appointment", consumes = MediaType.APPLICATION_JSON_VALUE,
produces= MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity newAppointment(@RequestBody /* WHAT TO PUT HERE?*/) {
}
How do I define an entity so that the @RequestBody
is automatically converted to an entity? Is that possible?
Upvotes: 2
Views: 1940
Reputation: 282
public class RequestVO {
public Map<String, List<String>> availabilityMap;
public Map<String, List<String>> getAvailabilityMap() {
return availabilityMap;
}
public void setAvailabilityMap(Map<String, List<String>> availabilityMap) {
this.availabilityMap = availabilityMap;
}
}
{}
can be represented as an object or a map, and []
can be represented as an implementation class of a Collection. (Commonly used are List and Set, which are also interfaces. The specific classes are specified by the sequence number framework. You can also use implementation classes such as HashMap.) For {}
, using an object or a map depends on whether the field is fixed or not. In the example, availabilityMap
is a fixed-name field, so the object is used. 2021-07-18
is an indefinite date or other class, so use Map. For one object, if its field is another object, you may need to write a new java class.
Upvotes: 1
Reputation: 373
In general, we prepare dto or resource for request and response. If your requests or responses are related to the database, it should be dto, otherwise you should mark it as a resource and you can perform automatic mapping operations using MapStruct.
@Data
public class RequestDto {
public Map<String, List<String>> availabilityMap;
}
Upvotes: 2