Как я могу захватить значение, которое приходит через POST для выполнения процедуры, хранящейся в Spring Boot - PullRequest
1 голос
/ 19 февраля 2020

Я работаю с Spring Boot, в котором я относительно новичок, и в этом случае я делаю проверку базы данных через Stored Procedue, которую я уже мог решить, реальность такова, что до сих пор я выполнял отправленные тесты параметр ввода (номер мобильного телефона) по GET, но это требуется по причинам проекта, отправьте параметр через POST, то есть в Body с методом:

Метод Get

enter image description here

С телом, использующим метод POST:

Запрос

{
  "movil":"04242374781";
}

Ответ:

{
    "result": "Cliente no encontrado",
    "code": "NA22003"
}

mobile - это атрибут базы данных, в которой выполняется хранимая процедура, для этого случая необходимо только передать этот параметр для выполнения SP, который возвращает ответ, который не является тем же объектом базы данных, в которой он является мобильным, тогда вы увидите это в коде.

Я понимаю, что вы можете отправить параметр для консультации с POST, но в моем случае попробуйте направить меня в соответствии с тем, что я получил на inte rnet , но я получил ошибку:

Решено [org.springframework.web.HttpMediaTypeNotSupportedException: тип содержимого 'text / plain' не поддерживается]

enter image description here

Мой код

Основной класс

package com.app.validacion;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App {

    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

Мой контроллер

package com.app.validacion.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RestController;


import com.app.validacion.dao.DriverBonificadosRepository;
import com.app.validacion.entity.RespuestaVo;


@RestController
public class DriverBonificadosController {

    @Autowired   // Inyeccion de Dependecia, en este caso del Respository
    private DriverBonificadosRepository dao;


    @GetMapping("/service/{movil}")
    public RespuestaVo  ConsultarMovil(@PathVariable("movil") String movil) {
        System.out.println(movil);
        return dao.validarClienteBonifiado(movil);

    }

    /* 
       the code I was trying to use to send a request in JSON and try to get the mobile parameter,but 
       I got an error:
       Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 
        'text/plain' not supported]
    /*
     * @PostMapping(value = "/service",consumes = "application/json", produces="application/json") 
     * public RespuestaVo ValidateClient(@RequestBody DriverBonificados driver) {
     * System.out.println(driver.getMovil()); 
     *   return dao.validarClienteBonifiado(driver.getMovil()); 
      } */


    }

Мой репозиторий

package com.app.validacion.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.validacion.entity.DriverBonificados;
import com.app.validacion.entity.RespuestaVo;


@Repository
public interface DriverBonificadosRepository extends JpaRepository<DriverBonificados, Integer> {

    @Query(nativeQuery = true,value = "call ValidacionClienteBonificado(:movil)")
    RespuestaVo validarClienteBonifiado(@Param("movil") String pMovil);

    }

Моя сущность

package com.app.validacion.entity;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="DriveBonificados")
public class DriverBonificados {

    @Id
    private int id;     
    private String movil;
    private String contador;
    private Date fecha_driver;
    private Date fecha_alta;
    private Date fecha_fin;
    private Date codigo_transaccion;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getMovil() {
        return movil;
    }
    public void setMovil(String movil) {
        this.movil = movil;
    }
    public String getContador() {
        return contador;
    }
    public void setContador(String contador) {
        this.contador = contador;
    }
    public Date getFecha_driver() {
        return fecha_driver;
    }
    public void setFecha_driver(Date fecha_driver) {
        this.fecha_driver = fecha_driver;
    }
    public Date getFecha_alta() {
        return fecha_alta;
    }
    public void setFecha_alta(Date fecha_alta) {
        this.fecha_alta = fecha_alta;
    }
    public Date getFecha_fin() {
        return fecha_fin;
    }
    public void setFecha_fin(Date fecha_fin) {
        this.fecha_fin = fecha_fin;
    }
    public Date getCodigo_transaccion() {
        return codigo_transaccion;
    }
    public void setCodigo_transaccion(Date codigo_transaccion) {
        this.codigo_transaccion = codigo_transaccion;
    }

}

Ответ моей модели

package com.app.validacion.entity;


public interface RespuestaVo {

    String getCode();
    String getResult();

}

1 Ответ

0 голосов
/ 19 февраля 2020

Хорошая запись, но решение (первой обнаруженной проблемы) тривиально:

С:

Решено [org.springframework.web.HttpMediaTypeNotSupportedException: Тип содержимого 'text / plain 'не поддерживается]

и с этим запросом почтальона вам необходимо:

  • спецификация почтальона c: переключить тип контента (request> body) из "Text" "to" JSON (application / json) "
  • обычно: добавьте (http) заголовок к Вашему запросу, например

    Content-Type: application/json;...  
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...