Ocorreu um erro 500 com a solicitação de postagem do Axios

Quando o autor estava escrevendo um formulário front-end para passar dados back-end, ocorreram os seguintes problemas

1. Cenário do problema

Quando uso axios para enviar uma solicitação de postagem, ocorre um erro 500.

O autor procurou por muito tempo o erro. Não houve problema com o código e a interface de backend. Mais tarde, descobri que o problema estava na classe de entidade.

Quando a solicitação de postagem de front-end ajusta a interface de back-end, o console de back-end imprime o seguinte erro

Vejo uma mensagem de erro informando que não é possível desserializar. O que isso significa?

Deixe-me elaborar

2. Solução

Em primeiro lugar, o formulário front-end transmite dados JSON, portanto, devemos adicionar @RequestBody aos parâmetros do método da camada controladora back-end pelos seguintes motivos

@RequestBody atua na lista de parâmetros formais e é usado para encapsular dados de formato fixo [formato xml ou json, etc.] enviados da recepção para o objeto JavaBean correspondente.Um objeto usado durante o encapsulamento é o HttpMessageConverter configurado padrão do sistema para análise
. Em seguida, encapsule-o no parâmetro formal

Então, por que ainda está relatando um erro?

Mais tarde, o autor pesquisou inúmeras vezes no Baidu e finalmente encontrou uma solução.

Conclusão: somente quando as classes de entidade possuem construtores sem parâmetros os objetos podem ser serializados.

Então adicionei o método @NoArgsConstructor à classe de entidade e usei http para ajustar a interface. O console front-end respondeu normalmente.

3. Resumo e reflexão

  • Serialização: O processo de conversão de uma estrutura de dados ou objeto em um fluxo de bytes binários
  • Desserialização: O processo de conversão do fluxo de bytes binários gerado durante o processo de serialização em uma estrutura de dados ou objeto
  • Os objetos precisam ser serializados antes da transmissão pela rede (como ao chamar RPC de um método remoto) e a desserialização precisa ser executada após o recebimento do objeto serializado;
  • A serialização é necessária ao armazenar objetos em arquivos e a desserialização é necessária ao ler objetos de arquivos.
  • A serialização é necessária ao armazenar objetos em um banco de dados de cache (como Redis) e a desserialização é necessária ao ler objetos do banco de dados de cache.

Ao serializar, a classe de entidade precisa implementar a interface Serializable

Ao desserializar, a classe de entidade precisa ter um construtor sem argumentos.

Acho que você gosta

Origin blog.csdn.net/m0_63732435/article/details/133500241
Recomendado
Clasificación