不是application/json,则会抛出HttpMediaTypeNotSupportedException。...二、可能出错的原因 Content-Type不匹配:客户端发送的请求Content-Type不是服务器预期的格式。...: POST /users HTTP/1.1 Host: example.com Content-Type: application/xml 由于Content-Type为application/xml...,而服务器预期的是application/json,因此会抛出HttpMediaTypeNotSupportedException。...四、正确代码示例 为了避免此错误,确保客户端发送的请求Content-Type与服务器端预期的格式一致。
mockMvc; void setup() { if (!...isbn | title "978-1-78398-478-7"|"Orchestrating Docker" "978-1-78528-415...another book"() { setup: def existingBook = bookRepository.findBookByIsbn("978-1-78528-415...; then : 一般跟在when后使用,尽可以包含断言语句、异常检查语句等等,用于检查要测试的方法执行后结果是否符合预期; cleanup:用于清除setup块中对环境做的修改,即将当前测试用例中的修改回滚...通过@Transactional注解可以实现事务操作,如果某个方法被该注解修饰,则与之相关的setup()方法、cleanup()方法都被定义在一个事务内执行操作:要么全部成功、要么回滚到初始状态。
/ 默认请求路径 .apply(sharedHttpSession()) // 配置session .alwaysExpect(status().isOk()) // 预期响应状态码...断言响应结果时,有2种方式: 1.使用JUnit提供的Assert断言工具判断返回结果,这是一种非常普遍和常见的方式 2.在MockMvc框架中可以通过andExpect()方法定义一个或多个预期结果.../simple/get").accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) // 预期响应状态码为...200 .andExpect(content().string("OK")) // 预期返回值为字符串“OK” .andDo(print()); } 相比于使用...Junit的断言工具判断返回结果,在MockMvc框架中直接定义预期结果进行断言检查更加简洁。
成功发起虚拟请求 3.匹配响应的执行状态 ---- 虚拟请求状态匹配: @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT...(builder); //设定预期值 与真实值进行比较,成功测试通过,失败测试失败 //定义本次调用的预期值 StatusResultMatchers...status = MockMvcResultMatchers.status(); //预计本次调用是成功的:状态200 ResultMatcher ok = status.isOk...//预计请求体为控制层组件的返回值"Springboot 测试类启动web环境 发送虚拟请求" //如果请求体反馈JSON数据,string()改为json()...header = MockMvcResultMatchers.header(); //预计请求头的Content-Type 为 text/plain;charset=UTF-8
param("size", "10") // 排序 .param("sort", "age,desc")) // 指定响应的预期状态码 .andExpect....get("/user/1") // 指定请求内容的格式 .contentType(MediaType.APPLICATION_JSON_UTF8)) // 指定响应的预期状态码...("/user/mm") // 指定请求内容的格式 .contentType(MediaType.APPLICATION_JSON_UTF8)) // 指定响应的预期状态码为...().isOk() 表示期望的响应状态码为200 MockMvcResultMatchers.status().is4xxClientError()表示期望的响应状态码为4xx 还可以是3xx、5xx等状态...(红色) 所有测试用例一起确认;选择对应的class,右键-->run “xxxxTests()” 至此,我们就可以基于MockMvc 单元测试任意我们想要的接口,使其到我们的预期
@TableLogic private Boolean deleted; 2、Swagger中测试 测试列表查询功能,查看结果,发生错误,显示响应失败 二、统一异常处理 目标:我们想让异常结果也显示为统一的返回结果对象...这显然不是最好的方式。 方案:此类异常直接抛出,并且用Exception类捕获就可以了。...,业务中需要的位置抛出BusinessException自定义异常。...ApiParam(value = "积分等级对象", required = true) @RequestBody IntegralGrade integralGrade){ //如果借款额度为空就手动抛出一个自定义的异常...@Slf4j public abstract class Assert { /** * 断言对象不为空 * 如果对象obj为空,则抛出异常 * @param obj
环境 python3+ 需要安装python prettytable 目前只支持nginx 日志 程序要求 Nginx日志格式要求: 第一个字段为 $remote_addr 第六个字段为 $status...第7个字段为 body_bytes_sent 或者 bytes_sent 字段解释: $remote_addr:客户端的访问ip body_bytes_sent:发送给客户端的字节数,不包括响应头的大小...bytes_sent:发送给客户端的字节数 $status:http状态码 下面是例子: log_format main '$remote_addr - $remote_user [$time_local...、流量总量,请求的总次数,并且计算各个状态的总量 并生成一个正真的字典,方便排序 for host_key in true_dict: host_value =...': o201, '101': o101, '429': o429, \ '415': o415, '410': o410, '408
user/query,通过url就可以知道当前的接口适用于查询操作的; RESTful API的url表示的是资源;如上图的接口地址,多次出现/user/1;/user/1表示着用户ID为1的这个用户资源...("size", "10") // 排序 .param("sort", "age,desc")) // 指定响应的预期状态码...(MediaType.APPLICATION_JSON_UTF8)) // 指定响应的预期状态码 .andExpect(MockMvcResultMatchers.status...(MediaType.APPLICATION_JSON_UTF8)) // 指定响应的预期状态码为4xx .andExpect(MockMvcResultMatchers.status...: RESTful API 更多的就是将数据理解为一个有一个的资源,当这个概念转换过来之后,就比较容易理解这个规范了
Http状态码 Http Status Code Http状态码含义中文说明 200 200 OK200 请求成功 201 201 Created201 请求已被接受,等待资源响应 202 202 Accepted202...414 414 Request-URI Too Long414 请求的URI过长 415 415 Unsupported Media Type415 无法处理的媒体格式 416 416 Range Not...接收到此状态时的默认操作为遵循与响应关联的 Location 头。原始请求方法为 POST 时,重定向的请求将使用 GET 方法。...接收到此状态时的默认操作为遵循与响应关联的 Location 头。原始请求方法为 POST 时,重定向的请求将使用 GET 方法。...接收到此状态时的默认操作为遵循与响应关联的 Location 头。原始请求方法为 POST 时,重定向的请求将使用 GET 方法。
2xx 成功 状态码 含义 200 正常 请求已完成。 201 正常 紧接 POST 命令。 202 正常 已接受用于处理,但处理尚未完成。 203 正常 部分信息 — 返回的信息只是一部分。...204 正常 无响应 — 已接收请求,但不存在要回送的信息。 3xx 重定向 状态码 含义 301 已移动 请求的数据具有新的位置且更改是永久的。 302 已找到 请求的数据临时具有不同 URI。...303 请参阅其它 可在另一 URI 下找到对请求的响应,且应使用 GET 方法检索此响应。 304 未修改 未按预期修改文档。 305 使用代理 必须通过位置字段中提供的代理来访问请求的资源。...404 找不到 服务器找不到给定的资源;文档不存在。 407 代理认证请求 客户机首先必须使用代理认证自身。 415 介质类型不受支持 服务器拒绝服务请求,因为不支持请求实体的格式。...5xx 服务器中出现的错误 状态码 含义 500 内部错误 因为意外情况,服务器不能完成请求。 501 未执行 服务器不支持请求的工具。 502 错误网关 服务器接收到来自上游服务器的无效响应。
,并且利用Javadoc的@throws:标记准确地记录下每个异常被抛出的条件。...如果一个方法可能会抛出多个异常类,那么不要使用“快捷方式”,即声明它会抛出这些异常类的某个基类。...这样的声明没有为你的客户提供关于“这个方法能够抛出哪些异常”的任何指导信息,而且大大地妨碍了该方法的使用,因为它实际上掩盖了在同样的执行环境中该方法可能会抛出的任何其他异常。...虽然最为顶层的Handler接口定义直接throws Exception,但如果愿意,我们依然可以通过覆写Handler的子类来进一步限定处理方法可能抛出的异常类型,例如: public class ExController...405 (SC_METHOD_NOT_ALLOWED) HttpMediaTypeNotSupportedException 415 (SC_UNSUPPORTED_MEDIA_TYPE
128 问题: #7.3-1 | Spring提供了3种方式将异常转换为响应 回答: 特定的Spring异常将会自动映射为指定的HTTP状态码; 异常上可以添加@ResponseStatus注解,从而将其映射为某一个...129 问题: #7.3.1-1 | Spring的一些异常会默认映射为HTTP状态码 回答: BindException --- 400 - Bad Request ConversionNotSupportedException...--- 500 - Internal Server Error HttpMediaTypeNotAcceptableException --- 406 - Not Acceptable HttpMediaTypeNotSupportedException...--- 415 - Unsupported Media Type HttpMessageNotReadableException --- 400 - Bad Request HttpMessageNotWritableException...404 - Not Found TypeMismatchException --- 400 - Bad Request 130 问题: #7.3.1-2 | @ResponseStatus注解:将异常映射为特定的状态码
Update首部列出的协议 200 OK 服务器已成功处理请求 201 Created(已创建) 对那些要服务器创建对象的请求来说,资源已创建完毕 202 Accepted(已接受) 请求已接受,但服务器尚未处理...响应中应该包含一个 Location URL,说明资源现在所处的位置 302 Found(已找到) 与状态码 301 类似,但这里的移除是临时的。...,在客户端获得资源访问权之前,请它进行身份认证 402 Payment Required(要求付款) 当前此状态码并未使用,是为未来使用预留的 403 Forbidden(禁止) 服务器拒绝了请求 404...(无法满足期望) 请求的 Expect 首部包含了一个预期内容,但服务器无法满足 500 Internal Server Error(内部服务器错误) 服务器遇到了一个错误,使其无法为请求提供服务 501...Unavailable(未提供此服务) 服务器目前无法为请求提供服务,但过一段时间就可以恢复服务 504 Gateway Timeout(网关超时) 与状态码 408 类似,但是响应来自网关或代理,此网关或代理在等待另一台服务器的响应时出现了超时
Spring提供了多种方式将异常转换为响应: 特定的Spring异常将会自动映射为指定的HTTP状态码; 异常上可以添加@ResponseStatus注解,从而将其映射为某一个HTTP状态码; 在方法上可以添加...3.1将异常映射为HTTP状态码 在默认情况下,Spring会将自身的一些异常自动转换为合适的状态码。...Spring的一些异常会默认映射为HTTP状态码 Spring异常 HTTP状态码 BindException 400 - Bad Request ConversionNotSupportedException...如果DispatcherServlet无法找到适合处理请求的控制器方法,那么将会抛出NoSuchRequestHandlingMethodException异常,最终的结果就是产生404状态码的响应(Not...3.4为控制器添加通知 如果多个控制器类中都会抛出某个特定的异常,那么你可能会发现要在所有的控制器方法中重复相同的@ExceptionHandler方法。
双击进入会看到如下画面 【3】默认是英文显示,我们可以将语言设置为【简体中文】选择Options-->Choose Language-->Chinese 【4】然后开始模拟测试一下Post请求,我们先使用...没关系选中测试计划,在编辑中操作 【7】设置线程组的基本参数 【8】设置完毕后,添加一个Http请求 【9】将我们的参数进行配置 【10】在测试前,为我们添加监听器,监听整个测试过程 【11】...配置完毕后,点击上方的绿色箭头,我们开始测试,但是观察结果树发现全部为空,全部失败,响应结果为 {"timestamp":1524180785396,"status":415,"error":"Unsupported...Media Type","exception":"org.springframework.web.HttpMediaTypeNotSupportedException","message":"Content...13】设置Header字段 配置完成后再次点击执行,全部为绿色 通过观察聚合报告,我们可以看到执行完线程组计划之后,我们的接口的性能和响应时长 要继续往上加大压力的话,再次回到上面,调整线程组的并发线程数即可
SpringExtension @Test 指定方法为测试方法 @TestMethodOrder 用于配置测试类中方法的执行顺序策略,配置为OrderAnnotation时,按@Order顺序执行 @Order...我们先来一个最简单的单元测试,使用@SpringBootTest注解启用单元测试,使用@Test指定测试方法,使用Assertions类的方法来断言结果是否符合预期,具体代码如下。...String str2 = "test"; Assertions.assertNotEquals(str1,str2); } } 也可以使用assertThrows方法来断言方法中抛出的异常...mockMvc; @Test void mvcTest() throws Exception{ //模拟发送一个请求访问分页查询品牌列表的接口 mockMvc.perform....param("pageSize","5")) .andExpect(MockMvcResultMatchers.status().isOk()) //断言返回状态码为
1×× 提示信息类状态码 1xx 提示信息类状态代码表示在完成请求的动作并发送最终响应之前,用于表示通信连接状态或请求进度的临时响应。...在 200 响应中发送的有效载荷取决于请求方法。 201-已创建,状态代码表示请求已完成,并导致创建一个或多个新资源。...401 未经授权 401(未授权)状态码表示该请求尚未应用,因为它缺少目标资源的有效身份验证凭据。 403 禁止 403(禁止)状态代码表示服务器理解请求但拒绝授权。...415 不支持的媒体类型 415(不支持的媒体类型)状态代码表示源服务器拒绝为请求提供服务,因为有效负载的格式不受目标资源上此方法的支持。...417 预期失败 418 我是个茶壶,超文本咖啡罐控制协议,但是并没有被实际的HTTP服务器实现 421 错误的请求 422 不可处理实体 423 锁定 424 失败的依赖关系 426 需要升级 428
点击关注公众号,Java干货及时送达 作者:BNDong 链接:www.cnblogs.com/bndong/p/10135370.html 前言 在启动应用时会发现在控制台打印的日志中出现了两个路径为...增加配置 # 出现错误时, 直接抛出异常(便于异常统一处理,否则捕获不到404) spring.mvc.throw-exception-if-no-handler-found=true # 不要为工程中的资源文件建立映射...HttpStatus.METHOD_NOT_ALLOWED.value(), exception.getMessage()); } /** * 415...异常处理 */ @ExceptionHandler(HttpMediaTypeNotSupportedException.class) public ModelAndView ...errorHandler(HttpServletRequest request, HttpMediaTypeNotSupportedException exception, HttpServletResponse
我们可以调用bindingResult.hasErrors()方法来判断是否验证成功,内部实现是判断存放错误信息的list集合是否为空。...ResultCode类,为了标识每一个状态码对应着错误的信息。...流程: 我们通过传入id,查询到具体的Girl类。年龄在(0,18)是萝莉,【18,30)是御姐,【30,35)是少妇,其他年龄段的统称大妈。我们返回数据的形式是通过抛出异常,异常向上抛出。...显而易见,id=1对应着小妹妹的年龄为15, 15在(0,18)区间段,应该输出“萝莉”。 ? image.png ?...200,请求返回的内容是否与我们预期的保持一致等等。
Exception:异常,是更为重要的一个分支,是程序员经常打交道的。异常定义为是程序的问题,程序本身是可以处理的。...的异常,万一是view抛出异常了呢???...此简单映射功能还算强大,但使用起来有诸多不便,因此Spring MVC默认情况下并没有装配上它(so它几乎处于一个被弃用的状态,基本可忽略)。...ResponseStatusExceptionResolver 若抛出的异常类型上有@ResponseStatus注解,那么此处理器就会处理,并且状态码会返给response。...所以最终因为ModelAndView是空的但异常也没throw出来,最终就是把response返回喽(已经设置好返回状态码和错误消息的response),显然这种方式虽然比上面稍好(没有错误代码了),但对用户来说也是不友好的
领取专属 10元无门槛券
手把手带您无忧上云