@RestController
public class RestErrorEndpoint implements ErrorController {
@Override
public String getErrorPath() {
return null;
}
@RequestMapping(value = {"${server.error.path:${error.path:/error}}"},produces="application/json")
@ResponseBody
public String error(HttpServletRequest request) {
System.out.println("json");
return "helloError";
}
@RequestMapping( value = {"${server.error.path:${error.path:/error}}"}, produces = {"text/html"} )
public ModelAndView errorHtml(HttpServletRequest request) {
System.out.println("html");
return new ModelAndView("/error/error");
}
// @RequestMapping({"${error.path:/error}"})
// @ResponseBody
// public ResponseEntity<Map<String, Object>> error(HttpServletRequest request) {
// Map body = this.getErrorAttributes(request, this.getTraceParameter(request));
// HttpStatus status = this.getStatus(request);
// return new ResponseEntity(body, status);
// }
}
spring boot 根据Accept头的内容,输出不同格式的错误响应。比如针对浏览器的请求生成html页面,针对其它请求生成json格式的返回。字段为accept的text/html的内容来判断。
produces = {"text/html"} 页面请求。
produces="application/json"为json或ajax请求
============================================================
最近开始使用springboot,发现一个奇怪的现象,一个url报错
使用浏览器地址请求返回一个html界面
- Whitelabel Error Page
- This application has no explicit mapping for /error, so you are seeing this as a fallback.
- Tue Nov 29 10:48:26 CST 2016
- There was an unexpected error (type=Bad Request, status=400).
- Required String parameter 'fileName' is not present
使用postman请求返回一个json格式的响应
- {
- "timestamp": 1480388264722,
- "status": 400,
- "error": "Bad Request",
- "exception": "org.springframework.web.bind.MissingServletRequestParameterException",
- "message": "Required String parameter 'fileName' is not present",
- "path": "/file/delete"
- }
究竟spring boot怎么来区分这种请求返回不同格式的数据的呢。经过一步步跟进。精髓在BasicErrorController这个类上
- @RequestMapping(
- value = {"${error.path:/error}"},
- produces = {"text/html"}
- )
- public ModelAndView errorHtml(HttpServletRequest request) {
- return new ModelAndView("error", this.getErrorAttributes(request, false));
- }
- @RequestMapping({"${error.path:/error}"})
- @ResponseBody
- public ResponseEntity<Map<String, Object>> error(HttpServletRequest request) {
- Map body = this.getErrorAttributes(request, this.getTraceParameter(request));
- HttpStatus status = this.getStatus(request);
- return new ResponseEntity(body, status);
- }
spring boot 根据Accept头的内容,输出不同格式的错误响应。比如针对浏览器的请求生成html页面,针对其它请求生成json格式的返回。字段为accept的text/html的内容来判断
相关推荐
例如,"JSON Viewer"会以树形结构展示数据,而"Pretty JSON"则提供了颜色编码,使得键值对更易区分。 以"JSON Formatter"为例,安装步骤如下: 1. 打开Chrome扩展商店,搜索"JSON Formatter"。 2. 在搜索结果中...
在Spring Boot项目开发中,为了确保前后端分离的项目之间通信的一致性和可维护性,通常会规定统一的JSON格式作为接口的返回结果。实现这一目标通常包括以下几个关键步骤: 1. 定义统一的JSON返回格式 首先需要定义...
统一异常处理会区分前端是否ajax请求,自动返回json数据格式,要求开发人员在处理ajax请求时统一封装成一个对象返回,以符合代码统一规范。 此工程在idea环境编写,导入请自己新建工程手工复制代码导入。
【SpringBoot+Mybatis-Plus使用webSocket实现一对一聊天后台】的实现主要涉及以下几个关键知识点: 一、WebSocket协议 WebSocket是一种在单个TCP连接上进行全双工通信的协议,它使得客户端和服务器之间的数据交换变...
3. Thymeleaf或Freemarker:作为视图模板引擎,用于动态渲染页面。 4. MySQL:作为数据存储,处理房源、订单等信息。 5. Redis:可能用于缓存管理和分布式锁。 6. Swagger:用于API文档的生成和调试,提高开发效率。...
本文主要介绍了 Spring Boot 统一异常处理的拓展篇,包括区分请求方式、错误页面处理和自定义 HTTP 错误状态码等内容。通过这些内容,我们可以更好地理解 Spring Boot 的统一异常处理机制,并且能够根据实际情况进行...
1. **数据访问**:通过Spring Data JPA或MyBatis等库,SpringBoot可以轻松处理数据库操作,如CRUD(创建、读取、更新、删除)。 2. **RESTful API**:构建RESTful服务,提供JSON格式的数据接口供前端调用。 3. **...
《基于SpringBoot的论坛系统源码数据库》是一个典型的Java Web项目,主要采用了SpringBoot框架,结合SSM(Spring、SpringMVC、MyBatis)架构和JSP技术,旨在实现一个功能完善的在线讨论平台。本项目的核心是利用...
管理员或教师可以发布公开或私有考试,考生在规定时间内进行答题。 六、成绩统计模块 成绩统计模块自动计算考生的得分,并根据需求生成各类统计报告,如平均分、最高分、最低分等,便于教师了解学生学习状况。 七...
如果是浏览器发起的请求,Spring Boot 会返回 HTML 错误页面,而如果是非浏览器请求,Spring Boot 会返回 JSON 错误信息。为了区分这两种请求,我们可以使用请求头中的 `Accept` 字段来判断请求的类型。 本文详细...
5. **API版本控制**:为确保向后兼容,项目可能会实施API版本管理,例如通过URL路径或请求头中的`Accept-Version`字段来区分不同版本的接口。 6. **错误处理和日志记录**:Spring Boot内置了错误处理机制,同时通过...
1. **控制器(Controllers)** - 处理HTTP请求,将数据传递给服务层进行业务逻辑处理,并返回视图或JSON响应。 2. **模型(Models)** - 定义业务对象,如理赔单、用户信息等,通常与数据库表结构对应。 3. **服务...
《基于Springboot+Vue的师生共评作业管理系统源码解析》 在当今信息化教育的时代,一个高效的作业管理系统对于提升教学质量和效率至关重要。本系统——"基于Springboot+Vue的师生共评作业管理系统",旨在为教师与...
### SpringBoot RESTful API 架构风格实践 #### 1. RESTful API 概述 ##### 1.1 什么是 RESTful API REST (Representational State Transfer) 是一种软件架构风格,它定义了一系列规则和约束条件,用于构建分布式...
1. **小程序前端代码**:主要包括`app.js`(全局配置)、`app.json`(应用配置)、`app.wxss`(全局样式)以及各个页面的`.js`、`.json`、`.wxml`(结构文件)和`.wxss`(样式文件)等。这些文件构成了微信小程序的...
6. **权限管理**:在校园管理系统中,可能会有不同角色(如管理员、教师、学生)的权限区分,因此需要实现角色权限控制,例如JWT(JSON Web Tokens)认证和授权。 7. **前端路由**:Vue.js的路由管理(vue-router)...
SpringBoot-Swagger 项目是将流行的API框架Swagger与SpringBoot结合使用的一个示例工程,旨在简化RESTful API的文档创建和测试过程。Swagger提供了一种标准且规范的方式来定义和构建RESTful API,并且能够自动生成与...
- **身份验证与授权**:可能使用Spring Security或JWT(JSON Web Tokens)来处理用户认证和权限控制。 - **国际化**:通过Spring的MessageSource实现多语言支持,为用户提供中英文切换的功能。 开发者在实施此项目...
根据请求方式区分返回 json 数据还是错误页面. Logback MDC 支持, 将当前登录人和操作者 IP 加入日志中. JSR-303 数据校验 运行环境 JDK 1.8 MySQL 5.7 Redis 配置文件 打开 application.properties 修改 MySQL 和 ...
SpringBoot简化了Maven配置,使得服务器设置和开发流程更为便捷,同时通过JSON数据格式提升数据交换的安全性和效率。 该系统设计了三个主要界面:用户界面、电力系统界面和管理员界面,以满足不同角色的需求。系统...