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.