【Java从0到架构师】SpringMVC - RESTful
RESTful
- RESTful 风格的实践建议
- 关于 put、delete
- @RestController
Java 从 0 到架构师目录:【Java从0到架构师】学习记录
Gitee 代码:https://gitee.com/szluyu99/mj_java_frame/tree/master/03_SpringMVC
REST 的全称是:REpresentational State Transfer,译为"表现层状态转移"
REST 是一种互联网软件架构设计风格
- 定义了一组用于创建 Web 服务的约束
- 符合 REST 架构的 web 服务,称为 RESTful Web 服务
RESTful 风格的实践建议
1、URL 中使用名词(建议用复数形式),不使用动词
- 推荐:/users、/users/6
- 不推荐:/listUsers、/getUser?id=6、/user/list、/user/get?id=6
2、使用 HTTP 的方法表达动作
3、一个资源连接到其他资源,使用子资源的形式
- GET /user/6/cars/88
- POST /user/8/cars
4、API 版本化
- mj.com/v1/users
- mj.com/v2/users/66
5、返回 JSON 格式的数据
6、发生错误时,不要返回 200 状态码
关于 put、delete
浏览器的 form 不支持 put,delete,可以使用 HiddenHttpMethodFilter 进行转化
- post + _method = put
- post + _method = delete
web.xml 中配置 HiddenHttpMethodFilter:
<filter><filter-name>HiddenHttpMethodFilter</filter-name><filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter><filter-mapping><filter-name>HiddenHttpMethodFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>
前端通过隐藏域发送 put、delete 请求:
<form action="${ctx}/skills/10" method="post"><input type="hidden" name="_method" value="delete"><button type="submit">提交</button>
</form>
注意:为了安全起见,很多公司严格禁用 PUT、DELETE 请求
- Tomcat 现在默认已经不支持 PUT、DELETE 请求
可以在 Tomcat 的 conf/web.xml 进行配置,即可支持 PUT、DELETE 请求
@RestController
@RestController
= @Controller
+ @ResponseBody
- 相当于默认给所有方法都增加了
@ResponseBody
@RestController
@RequestMapping("/users")
public class RestfulController {@GetMappingpublic String list() {return "list";}@GetMapping("/{id}")public String get(@PathVariable String id) {return "get - " + id;}@PostMappingpublic String save() {return "save";}
}
如果还是希望跳转页面,就返回 ModelAndView 对象
【Java从0到架构师】SpringMVC - RESTful相关推荐
- 【Java从0到架构师】SpringBoot - SpringMVC
SpringBoot - SpringMVC SpringMVC 的配置 文件上传功能 文件下载 - 以附件形式下载 静态资源访问 静态资源访问 - 映射 静态资源访问 - webjars Java ...
- 【Java从0到架构师】SpringMVC - 异常处理_拦截器
异常处理_拦截器 异常处理 简单的异常与页面映射 - SimpleMappingExceptionResolver √自定义异常处理类 - 实现 HandlerExceptionResolver 接口 ...
- 【Java从0到架构师】SpringMVC - 特殊的请求参数
SpringMVC - 特殊的请求参数 集合类型 - Map.List.Set.String[] Multipart 参数 - multipartResolver 文件参数 - MultipartFi ...
- 【Java从0到架构师】SpringMVC - 返回值
SpringMVC - 返回值 controller 中的返回值 无返回值 - 使用原始的 Servlet 的方法 普通文本.HTML - 设置响应头 Content-Type XML - 推荐使用 ...
- 【Java从0到架构师】SpringMVC - 基础
SpringMVC - 基础 SpringMVC - 入门 web.xml 配置 DispatcherServlet appliactionContext.xml 新建 Controller Spri ...
- 【Java从0到架构师(1),Java中高级面试题总结(全面)
JSP 九大内置对象 MySQL 基础 + 多表查询 [Java从0到架构师]MySQL 基础 MySQL MySQL 的使用步骤 数据库的内部存储细节 GUI 工具 SQL 语句 DDL 语句 DD ...
- 【Java从0到架构师】Dubbo 基础 - 设置启动时检查、直接提供者、线程模型、负载均衡、集群容错、服务降级
Dubbo 分布式 RPC 分布式核心基础 分布式概述 RPC Dubbo Dubbo 入门程序 - XML.注解 部署管理控制台 Dubbo Admin 修改绑定的注册 IP 地址 设置启动时检查 ...
- 【Java从0到架构师】项目实战 - 前后端分离、后端校验、Swagger、全局异常处理
项目实战 - 前后端分离.后端校验.Swagger Layui 同源策略 SpringMVC 实现 CORS 后端校验 - hibernate-validator 方法的 Model 参数校验 方法的 ...
- 【Java从0到架构师】SpringBoot - 页面模版_Thymeleaf
SpringBoot - 页面模版 集成 JSP 集成 Thymeleaf Thymeleaf 基本语法 注释 - 3 种 字面量 - ${} [[ ${} ]] 局部变量 - th:with.三目运 ...
最新文章
- mysql length函数无法对字段值为null的筛选
- Objective C 链式调用
- 深入理解JVM(6)——类加载器
- JavaScript:prototype属性使用说明
- PPC系统常见启动项(StartUp)解说
- 跨域访问-JSONP
- php的gd库处理大的图片,PHP的gd库处理图片
- error: ‘avcodec_alloc_frame’ was not declared in this scope
- 【深度讲解】手把手教你python制作萝莉音智能对话语音机器人,附全部源码!速速学起来!!
- 联通ip电视html1连不上,刷华硕固件看联通IPTV和上网两不误
- 汽车之家推荐系统排序算法迭代之路
- openCV获取和修改像素值
- 网络计算机自动巡检,网络设备巡检报告.doc
- 线程池的几种构造方法及使用的策略
- windows 2003 directx 3D加速 开启
- python数据分析之足球运动员分析
- css3中3D变换的景深和灭点
- HTTP 503 错误 – 服务不可用 (Service unavailable)
- MySQL锁表了怎么办?
- 单相干式变压器红外图像数据(255张图像)
热门文章
- 培养你的“翁格玛丽”
- DropBlock正则化
- 原子操作和杀死goroutine两种方法,解决多协程调用同一个函数的问题
- Maven的一些资源(配置方法、idea中toggle offline mode:切换脱机模式、idea中Toggle ‘Skip Tests’ Mode、 Dependencies 出现红色波浪线)
- socket地址API
- tfs sql查询_TFS安装中SQL Server课程
- iotop iostat_适用于SQL Server DBA的有用的Linux命令– iotop和iostat
- 解决性能问题中SQL Server警报:SQL Server警报基础
- powershell编程_对Power BI PowerShell Commandlet的编程访问
- 股债轮动策略之行业版