zoukankan      html  css  js  c++  java
  • SpringBoot踩坑记(HTTP 400 错误)

    HTTP 400 错误

    复现错误

    ajax请求后台数据时有时会报 HTTP 400 错误 - 请求无效 (Bad request);出现这个请求无效报错说明请求没有进入到后台服务里;
    原因:
    1)前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装;
    2)前端提交的到后台的数据应该是json字符串类型,而前端没有将对象转化为字符串类型;

    错误代码

    $.ajax({
            type: "POST",
            url: "news/newsAdd",
            data: data,
            dataType:'json',
            contentType:"application/json",
            success: function(data, textStatus, jqXHR) {
                console.log(data)
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                if (textStatus && textStatus == "timeout") {
                    confirm("网络超时,请重试!");
                } 
            }
        }
    );

    原因:直接将json作为参数传入

    参考  spring @RequestParam, @RequestBody Map注入注意事项

    • @RequestBody需要把所有请求参数作为json解析,因此,不能包含key=value这样的写法在请求url中,所有的请求参数都是一个json
    • 直接通过浏览器输入url时,@RequestBody获取不到json对象,需要用java编程或者基于ajax的方法请求,将Content-Type设置为application/json
    • @RequestParam参数中包含Map时,不要再写其他参数了,否则,map都会包含进去。

    更正代码

    $.ajax({
            type: "POST",
            url: "news/newsAdd",
            data: JSON.stringify(data),
            dataType:'json',
            contentType:"application/json",
            success: function(data, textStatus, jqXHR) {
                console.log(data)
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                if (textStatus && textStatus == "timeout") {
                    confirm("网络超时,请重试!");
                } 
            }
        }
    );

    参考:JSON.stringify()的用法

    @RequestBody的使用

    good luck!


    链接:https://juejin.im/post/5cd0ea2f6fb9a032076c1ca5

  • 相关阅读:
    jdk和dubbo的SPI机制
    何谓架构
    ElasticSearch的API使用
    LFU的基本原理与实现
    如何判断单向链表有环?
    mysql执行过程以及顺序
    原来 TinyPNG 可以这样玩!
    deno + mongodb 实战踩坑记
    好消息,vue3.0 进入 beta 阶段!
    听说会做这道题的人后来都进了头条?
  • 原文地址:https://www.cnblogs.com/alannever/p/13523740.html
Copyright © 2011-2022 走看看