Este artigo estuda principalmente o conteúdo relevante sobre o uso correto do @requestbody, como segue.
Recentemente, eu estava assumindo um emprego com um colega que estava prestes a sair. O projeto que assumi foi construído com o Springboot. Eu vi este método de escrita:
@RequestMapping ("Dothis") public String Dothis (solicitação httpServletRequest, @RequestParam ("id") Long Id, // Id de usuário @ReQuestParam ("back_url") string back_url, // endereço de chamada @requestbody TestityEste é um método de mapeamento de solicitação e, em seguida, digite o URL com o navegador: http://127.0.0.1:8080/test/dothis?id=1&back_url=url&json_data= {"code":2,":7:7.
Neste método, use @requestparam para obter os parâmetros e depois use @requestbody para converter os parâmetros no formato JSON para Java Type
Ao funcionar, o erro foi encontrado: Falta o corpo de solicitação exigido
O @RequestBody exige o uso do MappingJackson2HTTPMESSAGECONVERTER para carregar, mas a documentação oficial do Springboot menciona que isso já está carregado por padrão, e não há erros na redação de Strings JSON e Javabeans.
Portanto, considerando que deve ser um problema de solicitar o tipo de conteúdo, porque não há como definir o tipo de conteúdo usando o navegador para entrar no URL, a primavera não pode encontrar o corpo da solicitação
Para confirmar essa ideia, escreva uma classe de solicitação:
String add_url = "http://127.0.0.1:8080/test/dothis"; Url url = novo url (add_url); Conexão httpurlConnection = (httpurlConnection) url.openconnection (); Connection.SetDoinput (true); Connection.SetDoOutput (true); Connection.SetRequestMethod ("Post"); Connection.setUseCaches (false); Connection.setInstanceFollowDredirects (true); Connection.SetRequestProperty ("conteúdo-tipo", "Application/JSON"); Connection.Connect (); DataOutputStream Out = new DataOutputStream (Connection.getOutputStream ()); JsonObject obj = new jsonObject (); obj.put ("código", -1002); obj.put ("mensagem", "msg"); out.WriteBytes (obj.toString ()); out.flush (); out.Close ();A solicitação ainda falhou. Após a depuração, descobri que todas as anotações @RequestParam precisam ser removidas para ter sucesso.
Resumir
1. @Requestbody precisa analisar todos os parâmetros de solicitação como JSON. Portanto, o Key = Value não pode ser incluído no URL da solicitação. Todos os parâmetros de solicitação são um JSON
2. Ao inserir o URL diretamente através do navegador, o @Requestbody não pode obter o objeto JSON. Você precisa usar a programação Java ou a solicitação de método baseada em AJAX e definir o tipo de conteúdo para o aplicativo/json
O exposto acima é sobre interpretar o uso correto do @Requestbody, e espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!