下图是学习REST风格接口,然后通过SpringMVC实现的一个课程管理系统的效果图。 那么RESTful是什么呢?其实简言之看Url就知道要什么、看Http method就知道干什么、看Http status code就知道结果如何。
大家都知道”古代”网页是前端后端融在一起的,比如之前的PHP,JSP等。在之前的桌面时代问题不大,但是近年来移动互联网的发展,各种类型的Client层出不穷,RESTful可以通过一套统一的接口为 Web,iOS和Android提供服务。另外对于广大平台来说,比如Facebook platform,微博开放平台,微信公共平台等,它们不需要有显式的前端,只需要一套提供服务的接口,于是RESTful更是它们最好的选择。
REST风格概述
REST风格的服务呢:REST(Representational State Transfer),中文可以叫表述性状态转移!
如你所见,RESTful其实是为了只提供一套统一的接口,让其他任何需要访问资源的设备或者服务都从这个同一的接口写数据,取数据!
REST本质上是使用URL来访问资源种方式。URL就是我们平常使用的请求地址了,其中包括两部分:请求方式与请求路径,比较常见的请求方式是GET与POST,但在REST中又提出了几种其它类型的请求方式,汇总起来有六种:GET、POST、PUT、DELETE、HEAD、OPTIONS。尤其是前四种,正好与CRUD(Create-Retrieve-Update-Delete,增删改查)四种操作相对应,例如,GET(查)、POST(增)、PUT(改)、DELETE(删),这正是REST与CRUD的异曲同工之妙!需要强调的是,REST是“面向资源”的,这里提到的资源,实际上就是我们常说的领域对象,在系统设计过程中,我们经常通过领域对象来进行数据建模。
REST是一个“无状态”的架构模式,因为在任何时候都可以由客户端发出请求到服务端,最终返回自己想要的数据,当前请求不会受到上次请求的影响。也就是说,服务端将内部资源发布REST服务,客户端通过URL来访问这些资源,这不就是SOA所提倡的“面向服务”的思想吗?所以,REST也被人们看做是一种“轻量级”的SOA实现技术,因此在企业级应用与互联网应用中都得到了广泛应用。
REST 描述了一个架构样式的互联系统(如 Web 应用程序)。REST 约束条件作为一个整体应用时,将生成一个简单、可扩展、有效、安全、可靠的架构。由于它简便、轻量级以及通过 HTTP 直接传输数据的特性,RESTful Web 服务成为基于 SOAP 服务的一个最有前途的替代方案。用于 web 服务和动态 Web 应用程序的多层架构可以实现可重用性、简单性、可扩展性和组件可响应性的清晰分离。开发人员可以轻松使用 Ajax 和 RESTful Web 服务一起创建丰富的界面,相信这句话还是很能说明问题的!
REST实战
这个练手小项目就是正如上图所示,是个课程管理的项目,功能是查询课程,添加课程,修改课程,删除课程,CURD全齐了(为了说明主要问题,Dao层直接通过一个HashMap模拟了),下面把代码摆出来,摆代码之前先说说这个小项目的注意点:
- 发一个重定向请求,注意格式问题:
return "redirect:/getAll";
- PostMapping 用于增删改查的 增
- GetMapping 用于增删改查的 查
- PutMapping 用于增删改查的 改
- DeleteMapping 用于增删改查的 删
- 写jsp的时候不要忘记EL表达式的支持
- 引入css文件的时候,要么选择网络连接引入,要么配置css的servlet默认请求,否则会引入失败
- 隐式DELETE请求和隐式PUT请求
<input type="hidden" name="_method" value="DELETE"/>
和<input type="hidden" name="_method" value="PUT"/>
- Button做页面跳转的方式:
<button type="button" class="btn btn-default" onclick = "window.location.href = 'getAdd'">
CourseController.java
1 |
|
Dao层:
1 |
|
JavaBean:
1 | public class Course { |
web.xml
1 |
|
springmvc.xml
1 | <!-- JSON数据解析 --> |
index.jsp
1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> |
edit.jsp
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> |
add.jsp
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> |
pom.xml
1 | <dependency> |
- 本文作者: Tim
- 本文链接: https://zouchanglin.cn/2019/03/01/3955314274.html
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 许可协议。转载请注明出处!