/ / Пролетно зареждане Остатъчен контролер POST множество типове данни, присвоени на един URL адрес за заявка - java, spring, rest, jackson, spring-boot

Пролетно зареждане Остатъчен контролер POST множество типове данни, присвоени на един URL адрес за заявка - java, spring, rest, jackson, spring-boot

Опитвам се да настроя крайна точка, която може да приеме един обект или списък от обекти от същия тип.

Опитах да има два метода, обявени с двата типа данни, но пролетта не харесва това (не успя да стартира сървър)

@RequestMapping(
value = "",
method = RequestMethod.POST ,
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE
)
public ResponseEntity<Object> single(@RequestBody Something something){
return ResponseEntity.ok("ok");
}

@RequestMapping(
value = "",
method = RequestMethod.POST ,
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE
)
public ResponseEntity<Object> multiple(@RequestBody List<Something> somethingList){
return ResponseEntity.ok("ok");
}

Най-близкото, което получих, е приемането на Нещо [] и обявяването на един метод.

@RequestMapping(
value = "",
method = RequestMethod.POST ,
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE
)
public ResponseEntity<Object> somethingArray(@RequestBody Something... something){
return ResponseEntity.ok("ok");
}

Въпрос: Има ли начин да направите това, без да трябва да приемате само обект и да направите десериализацията ръчно?

EDIT: Също така опитах няколко @RequestBody "s, т.е.

@RequestMapping(
value = "",
method = RequestMethod.POST ,
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE
)
public ResponseEntity<Object> somethingArray(@RequestBody(required = false) Something something, @RequestBody(required = false) Something[] somethingArray){
return ResponseEntity.ok("ok");
}

Отговори:

0 за отговор № 1

Можете да създадете един метод, който да получиНапример низ. След това трябва да анализирате низ, да го изпратите на обект и да се обадите на частен метод, който зависи от типа резултат. Но имам предвид грешния му подход. По-добре дефинирайте различни крайни точки за различни параметри.


0 за отговор № 2

Обикновено правя множествена крайна точка, когато правите това.

Ако добавям клиент, крайната точка ще бъде / клиент, ако е списък, който правя / клиенти.

Доколкото ми е известно, не можете да претоварвате метода на заявката по тип на параметъра.