美文网首页服务器后端开发
前端以form-data方式/raw方式发送post请求的区别

前端以form-data方式/raw方式发送post请求的区别

作者: 墨色尘埃 | 来源:发表于2017-12-13 14:45 被阅读6617次

    postman中 form-data、x-www-form-urlencoded、raw、binary的区别
    四种常见的 POST 提交数据方式

    POST请求
    @RequestParam:
    ① 用来处理(前端)Content-Type: 为 application/x-www-form-urlencoded或者form-data编码的内容
    ② 该注解有两个属性: value、required; value用来指定要传入值的id名称,required用来指示参数是否必须绑定;
    注意这里Headers里不能以application/json作为Content-type,否则后台也接收不到请求

    采用form-data方式,Headers里应该为空.png 采用form-data方式,Headers里不为空时报错.png 采用form-data方式发送post请求.png Control中方法
        @RequestMapping(value = "/del", method = RequestMethod.POST)
        public ResponseObj<Boolean> delete(@RequestParam String enterpriseId,
                                           @RequestParam String operator,
                                           @RequestParam String status) {
            int i = enterpriseBaseMapper.deleteByPrimaryKey(enterpriseId);
            if (i == 1)
                return new ResponseObj<Boolean>(true, RetCode.SUCCESS);
            return new ResponseObj<Boolean>(false, RetCode.FAIL);
        }
    

    @RequestBody
    ① 该注解常用来处理Content-Type: 不是application/x-www-form-urlencoded编码的内容,例如application/json, application/xml等;
    前端规定的是raw方式,那么就需要使用@RequestBody接收参数,注意这里Headers里需要以application/json作为Content-type

    以raw方式发送post请求.png

    使用如下代码可以正常进入断点

    @RequestMapping(value = "/del", method = RequestMethod.POST)
        public ResponseObj<Boolean> delete(/*@RequestParam String enterpriseId,
                                           @RequestParam String operator,
                                           @RequestParam String status*/
                                           @RequestBody Map<String,Object> map) {
            String enterpriseId = (String) map.get("enterpriseId");
            String operator = (String) map.get("operator");
            String status = (String) map.get("status");
            int i = enterpriseBaseMapper.deleteByPrimaryKey(enterpriseId);
            if (i == 1)
                return new ResponseObj<Boolean>(true, RetCode.SUCCESS);
            return new ResponseObj<Boolean>(false, RetCode.FAIL);
        }
    

    那么以后尽量使用@RequestBody Map<String,Object> map这种形式
    @RequestParam @RequestBody @PathVariable 等参数绑定注解详解

    相关文章

      网友评论

        本文标题:前端以form-data方式/raw方式发送post请求的区别

        本文链接:https://www.haomeiwen.com/subject/pkjaixtx.html