You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

mockMvc调用.contentType(MediaType.APPLICATION_JSON)的作用是什么?

问题对应解答

你删除的配置是contentType(MediaType.APPLICATION_JSON),相关说明如下:

该配置的作用

这行代码的作用是为测试请求设置Content-Type请求头,明确告知服务端本次请求携带的请求体是JSON格式,方便服务端选择对应的解析器处理请求参数。

删除后测试无差异的原因

你当前测试的删除接口仅通过路径参数传递用户ID,没有携带任何请求体内容,服务端不需要解析请求体,所以不管有没有设置这个请求头,都不会影响接口的正常执行逻辑,自然测试结果不会有区别。

必须使用该配置的场景

只有当存在以下情况时,才需要主动添加该配置:

  • 请求需要提交JSON格式的请求体:比如POST新增、PUT修改类接口,需要通过content方法传递JSON字符串参数时,必须声明Content-Type为JSON,否则服务端会无法识别参数格式,返回415 Unsupported Media Type错误。
    示例代码:
    @Test
    public void addPatient_success() throws Exception {
        String patientJson = "{\"name\":\"张三\",\"age\":30,\"contact\":\"13000000000\"}";
        
        mockMvc.perform(MockMvcRequestBuilders
                .post("/patient")
                // 必须加这行才能让服务端正确解析上面的JSON参数
                .contentType(MediaType.APPLICATION_JSON)
                .content(patientJson))
                .andExpect(status().isOk());
    }
    
  • 服务端有强制校验规则:部分项目会统一拦截所有请求,要求必须携带符合约定的Content-Type头,就算是没有请求体的请求也需要校验,这种场景下也必须添加该配置,否则请求会被拦截直接返回错误。

针对void返回值接口的说明

返回值为void的Controller接口,Spring MVC默认会在接口无异常抛出时返回200 OK状态码,这个响应逻辑和你是否配置Content-Type请求头完全无关,所以你在这个场景下看不到配置的作用。

内容的提问来源于stack exchange,提问作者user16613329

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 20:36:03