Добрый день У меня небольшой запрос, вопрос в том, что я запускаю небольшую службу REST, которая получает запрос и должна вернуть пользовательский ответ, фактически у меня уже есть ответ, но этот текущий ответ был основан на Хранимая процедура, поэтому к ответу я должен вернуться через прогнозы в Spring Boot, вопрос в том, что мне нужен персонализированный JSON ответ, но я не знаю, как это сделать, я вижу, что он будет с классы, но у меня есть сомнения в том, как это будет сочетаться с интерфейсом, который я использую в качестве проекции для извлечения и отображения ответа Stored Procedue.
Мой код
Основной класс
package com.app.validate;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ValidateClientApp {
public static void main(String[] args) {
SpringApplication.run(ValidateClientApp.class, args);
}
}
Контроллер
package com.app.validate.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.app.validate.dao.ValidateClientAppRepository;
import com.app.validate.entity.ResponseVo;
import com.app.validate.request.BodyRequestComplete;
@RestController
public class ValidateClientAppController {
@Autowired
private ValidateClientAppRepository dao;
@PostMapping(value = "/ValidateClientApp",consumes = "application/json",produces="application/json")
public ResponseVo ValidateClient(@RequestBody BodyRequestComplete req) {
//System.out.println(driver.getMovil());
return dao.validarClienteBonificado(req.getValidateClient().getBodyRequest().getValidateClientRequest().getMovil());
}
}
Dao
package com.app.validate.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import com.app.validate.entity.DriverBonificados;
import com.app.validate.entity.ResponseVo;
@Repository
public interface ValidateClientAppRepository extends JpaRepository<DriverBonificados, Integer> {
@Query(nativeQuery = true,value = "call ValidacionClienteBonificado(:movil)")
ResponseVo validarClienteBonificado(@Param("movil") String pMovil);
}
ResponseVo (Интерфейс используется для получения ответа Stored Procedue и может отображать его как Json)
package com.app.validate.entity;
public interface ResponseVo {
String getCode();
String getResult();
}
BodyRequest
package com.app.validate.request;
import com.fasterxml.jackson.annotation.JsonProperty;
public class BodyRequest {
@JsonProperty("ValidateClientRequest")
private ValidateClientRequest validateClientRequest;
public ValidateClientRequest getValidateClientRequest() {
return validateClientRequest;
}
public void setValidateClientRequest(ValidateClientRequest validateClientRequest) {
this.validateClientRequest = validateClientRequest;
}
}
BodyRequestComplete
package com.app.validate.request;
import com.fasterxml.jackson.annotation.JsonProperty;
public class BodyRequestComplete {
@JsonProperty("ValidateClient")
private ValidateClient validateClient;
public ValidateClient getValidateClient() {
return validateClient;
}
public void setValidateClient(ValidateClient validateClient) {
this.validateClient = validateClient;
}
}
ValidateClient
package com.app.validate.request;
import com.fasterxml.jackson.annotation.JsonProperty;
public class ValidateClient {
@JsonProperty("Body")
private BodyRequest bodyRequest;
public BodyRequest getBodyRequest() {
return bodyRequest;
}
public void setBodyRequest(BodyRequest bodyRequest) {
this.bodyRequest = bodyRequest;
}
}
ValidateClientRequest
package com.app.validate.request;
import com.fasterxml.jackson.annotation.JsonProperty;
public class ValidateClientRequest {
@JsonProperty("msisdn")
private String movil;
public String getMovil() {
return movil;
}
public void setMovil(String movil) {
this.movil = movil;
}
}
Мой запрос uest
{
"ValidateClient": {
"Body": {
"ValidateClientRequest": {
"msisdn": "04242125890"
}
}
}
}
Мой ответ (текущий)
{
"result": "Cliente aplica para bono",
"code": "00000"
}
Желаемый ответ
{ "ValidateClient": {
"Body":
{
"detail": {
"Code": "00000",
"Message": "Cliente aplica para bono",
}
}
}
}
Тест почтальона

Структура моего кода
