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相关推荐

  1. 【Java从0到架构师】SpringBoot - SpringMVC

    SpringBoot - SpringMVC SpringMVC 的配置 文件上传功能 文件下载 - 以附件形式下载 静态资源访问 静态资源访问 - 映射 静态资源访问 - webjars Java ...

  2. 【Java从0到架构师】SpringMVC - 异常处理_拦截器

    异常处理_拦截器 异常处理 简单的异常与页面映射 - SimpleMappingExceptionResolver √自定义异常处理类 - 实现 HandlerExceptionResolver 接口 ...

  3. 【Java从0到架构师】SpringMVC - 特殊的请求参数

    SpringMVC - 特殊的请求参数 集合类型 - Map.List.Set.String[] Multipart 参数 - multipartResolver 文件参数 - MultipartFi ...

  4. 【Java从0到架构师】SpringMVC - 返回值

    SpringMVC - 返回值 controller 中的返回值 无返回值 - 使用原始的 Servlet 的方法 普通文本.HTML - 设置响应头 Content-Type XML - 推荐使用 ...

  5. 【Java从0到架构师】SpringMVC - 基础

    SpringMVC - 基础 SpringMVC - 入门 web.xml 配置 DispatcherServlet appliactionContext.xml 新建 Controller Spri ...

  6. 【Java从0到架构师(1),Java中高级面试题总结(全面)

    JSP 九大内置对象 MySQL 基础 + 多表查询 [Java从0到架构师]MySQL 基础 MySQL MySQL 的使用步骤 数据库的内部存储细节 GUI 工具 SQL 语句 DDL 语句 DD ...

  7. 【Java从0到架构师】Dubbo 基础 - 设置启动时检查、直接提供者、线程模型、负载均衡、集群容错、服务降级

    Dubbo 分布式 RPC 分布式核心基础 分布式概述 RPC Dubbo Dubbo 入门程序 - XML.注解 部署管理控制台 Dubbo Admin 修改绑定的注册 IP 地址 设置启动时检查 ...

  8. 【Java从0到架构师】项目实战 - 前后端分离、后端校验、Swagger、全局异常处理

    项目实战 - 前后端分离.后端校验.Swagger Layui 同源策略 SpringMVC 实现 CORS 后端校验 - hibernate-validator 方法的 Model 参数校验 方法的 ...

  9. 【Java从0到架构师】SpringBoot - 页面模版_Thymeleaf

    SpringBoot - 页面模版 集成 JSP 集成 Thymeleaf Thymeleaf 基本语法 注释 - 3 种 字面量 - ${} [[ ${} ]] 局部变量 - th:with.三目运 ...

最新文章

  1. mysql length函数无法对字段值为null的筛选
  2. Objective C 链式调用
  3. 深入理解JVM(6)——类加载器
  4. JavaScript:prototype属性使用说明
  5. PPC系统常见启动项(StartUp)解说
  6. 跨域访问-JSONP
  7. php的gd库处理大的图片,PHP的gd库处理图片
  8. error: ‘avcodec_alloc_frame’ was not declared in this scope
  9. 【深度讲解】手把手教你python制作萝莉音智能对话语音机器人,附全部源码!速速学起来!!
  10. 联通ip电视html1连不上,刷华硕固件看联通IPTV和上网两不误
  11. 汽车之家推荐系统排序算法迭代之路
  12. openCV获取和修改像素值
  13. 网络计算机自动巡检,网络设备巡检报告.doc
  14. 线程池的几种构造方法及使用的策略
  15. windows 2003 directx 3D加速 开启
  16. python数据分析之足球运动员分析
  17. css3中3D变换的景深和灭点
  18. HTTP 503 错误 – 服务不可用 (Service unavailable)
  19. MySQL锁表了怎么办?
  20. 单相干式变压器红外图像数据(255张图像)

热门文章

  1. 培养你的“翁格玛丽”
  2. DropBlock正则化
  3. 原子操作和杀死goroutine两种方法,解决多协程调用同一个函数的问题
  4. Maven的一些资源(配置方法、idea中toggle offline mode:切换脱机模式、idea中Toggle ‘Skip Tests’ Mode、 Dependencies 出现红色波浪线)
  5. socket地址API
  6. tfs sql查询_TFS安装中SQL Server课程
  7. iotop iostat_适用于SQL Server DBA的有用的Linux命令– iotop和iostat
  8. 解决性能问题中SQL Server警报:SQL Server警报基础
  9. powershell编程_对Power BI PowerShell Commandlet的编程访问
  10. 股债轮动策略之行业版