@turdubekov
Студент

Как полученный POST запрос с JSON телом, обработать и отдать ответ в виде XML?

Доброе утро!
Вопрос: Как полученный POST запрос с JSON телом, обработать и отдать ответ в виде XML?

1. Я получаю json, но не знаю как его обработать и вернуть в виде XML
что у меня получается:
611c2e2de7857998845094.png

А должно быть:
<?xml version="1.0" encoding="UTF-8" ?>
<response id="123123123" dts="2021-04-10 01:01:01">
  <p_id>111222</p_id>
  <status>1</status>
  <message>PAYMENT CONFIRMED</message>
</response>


код:
Контроллер
@RestController
  @RequestMapping(path = "/")
  @RequiredArgsConstructor

  public class RequestController{

  private final RequestServiceImpl service;

   @PostMapping(path = "/save", 
   produces = {"application/xml", "text/xml"}, consumes = 
                MediaType.ALL_VALUE)

  public ResponseEntity<Request> pay(@RequestBody Request request){
    service.save(request);
    return ResponseEntity.ok(request);
      }
   }


сущность:
@Entity
@Getter
@Setter
@NoArgsConstructor
@XmlRootElement
public class Request {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Long supplierId;
private String account;
private Long amount;

@Enumerated(EnumType.STRING)
private Command command;

private LocalDateTime date;
}

Заранее спасибо!
  • Вопрос задан
  • 597 просмотров
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Добрый день.
У вас должно быть 2 DTO.
1 - для получения json из POST запроса.
2 - для возврата xml в ответе.
После обработки json вам нужен некий маппер (можно использовать интерфейс Converter<S,T>), который сконвертирует ваш Request в Response.
Тут должно быть примерно так:
@PostMapping(path = "/save", 
   produces = {"application/xml", "text/xml"}, consumes = 
                MediaType.ALL_VALUE)
  public ResponseEntity<Response> pay(@RequestBody Request request){
    service.save(request);
// тут конвертируем request в response
    return ResponseEntity.ok(response);
      }
   }


Вот, примерная структура dto для xml response
public class response { 
	public int p_id;
	public int status;
	public String message;
	public int id;
	public Date dts;
	public String text;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы