springboot~通过集成测试来理解Accept和Content-Type 务器我希望接收什么格式的响应数据 详细说明1.Content-Type(内容类型)作用描述请求体的格式使用场景当你的请求有请求体时如POST、PUT请求示例Content-Type: application/json表示我发送的是JSON格式的数据// 在MockMvc中设置Content-Type mockMvc.perform(post(/api/users) .contentType(MediaType.APPLICATION_JSON) // 告诉服务器请求体是JSON .content({\name\:\John\, \age\:30}))2.Accept(接受类型)作用描述客户端期望的响应格式使用场景任何请求GET、POST、PUT、DELETE等示例Accept: application/json表示我希望接收JSON格式的响应// 在MockMvc中设置Accept mockMvc.perform(get(/api/users/1) .accept(MediaType.APPLICATION_JSON)) // 期望服务器返回JSON 实际应用场景场景1POST请求发送JSON期望返回JSON// 这种情况需要同时设置Content-Type和Accept mockMvc.perform(post(/api/users) .contentType(MediaType.APPLICATION_JSON) // 我发送JSON .accept(MediaType.APPLICATION_JSON) // 我希望收到JSON .content({\name\:\John\, \age\:30})) .andExpect(status().isCreated());场景2GET请求期望返回JSON// 只有请求没有请求体所以只需要Accept mockMvc.perform(get(/api/users) .accept(MediaType.APPLICATION_JSON)) // 只设置Accept .andExpect(status().isOk());场景3POST请求发送JSON不关心响应格式// 只设置Content-Type不设置Accept mockMvc.perform(post(/api/users) .contentType(MediaType.APPLICATION_JSON) // 只设置Content-Type .content({\name\:\John\, \age\:30})); 总结表格参数作用使用场景示例值Content-Type描述请求体格式POST、PUT等有请求体的操作application/jsonAccept描述期望的响应格式任何需要特定响应格式的操作application/json️ 实际代码示例完整的POST请求测试示例Test public void testCreateUser() throws Exception { // 准备请求数据 UserCreateRequest request new UserCreateRequest(John, johnexample.com); String requestJson new ObjectMapper().writeValueAsString(request); // 执行请求 mockMvc.perform(post(/api/users) .contentType(MediaType.APPLICATION_JSON) // 必须请求体是JSON .accept(MediaType.APPLICATION_JSON) // 可选期望JSON响应 .content(requestJson)) .andExpect(status().isCreated()) .andExpect(jsonPath($.id).exists()) .andExpect(jsonPath($.name).value(John));