跳至主要內容

RESTful

Yang大约 2 分钟

开发规范

  • 使用 URL 作为用户交互入口

  • 明确的语义规范( GET | POST | PUT | DELETE

  • 只返回数据( JSON | XML ),不包含任何展现

命名要求

  • URI 必须具有语义
  • URI 必须使用名次
  • URL 扁平化,不超过两级
  • URI 名词区分单复数

![](../../Library/Application Support/typora-user-images/image-20210819164549318.png)

注解

注解说明
@RestController相当于 @Controller + @ResponseBody,将返回的字符串向请求进行输出
@RequestMapping("")通用绑定,请求映射地址,作用在方法上,不再区分 get/post 请求
@PathVariable("")路径变量
@RequestParam(manager_name) String managerName
@RequestParam(value="manager_name",defaultValue="aaaa") String managerName
@DateTimeFormat(pattern="yyyy-MM-dd")将前端传入的日期字符串转换为 java.util.date
@GetMapping绑定 Get 请求
@PostMapping绑定 Post 请求
@PutMapping
@DeleteMapping

请求类型

两种请求类型最大区别是非简单请求发送前要发送预检请求

简单请求

标准结构的 HTTP 请求,对应 GET/POST 请求

非简单请求

复杂要求的 HTTP 请求,指 PUT/DELETE、扩展标准请求

JSON

配置

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.9.9</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.9.9</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-annotations</artifactId>
  <version>2.9.9</version>
</dependency>

注解

  • 格式化时间
    • @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss SSS", timezone="GMT+8")

跨域访问

浏览器同源策略

阻止从一个域加载的脚本去获取另一个域上的资源

  • 协议、域名、端口,有任何一个不同,都被当做是不同的域

允许跨域的标签

  • <img>:显示远程图片
  • <script>:加载远程 JS
  • <link>:加载远程 CSS

CORS 跨域资源访问

是一种机制,使用额外的 HTTP 头通知浏览器可以访问其他域

  • URL 响应头包含 Access-Control-* 指明请求允许跨域

跨域注解

@CorssOrigin - Controller 跨域注解

@RestController
// @CrossOrigin(origins={"*"}) 允许所有
@CrossOrigin(origins={"http://localhost:8080"},maxAge=3600)
  • maxAge:预检请求的结果缓存时长

XML 配置跨域

<mvc:cors>
  <mvc:mapping path="/restful/**"
               allowed-origins="http://localhost:8080,http://www.imooc.com"
               max-age="3600"/>
</mvc:cors>
上次编辑于:
贡献者: sunzhenyang