• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

6RestFul API-Java Spring

武飞扬头像
Yeats_Liao
帮助1

6.1 RestFul API介绍

Rest表示性状态转移(Representation State Transfer),用URI表示资源,用HTTP方法(GET, POST, PUT, DELETE)表征对这些资源的操作,用于 Web 数据接口的设计,Rest的最基本特征是面向资源

  • Resource 资源,资源是构成应用系统的所有的基本概念,即数据
  • Representational 表述,REST的资源可以用XML,JSON,纯文本等多种方式表述
  • State Transfer 状态转移,客户端通过HTTP的GET/POST/PUT/DELETE/PATCH对资源进行操作,实现资源的状态转移

6.2 URL构成

Restful API用URL表示特定的资源或资源集合,例如http://www.xxx.com/goods

  • URI(统一资源标识符)用于标识一个资源,提供标识资源的方法
  • URL(统一资源定位符)用于提供找到某个资源的路径,比如网址
  • URL是URI的子集
URL 描述
/categories 商品的所有一级分类categories
/categories/1 id为1的一级分类
/categories/1/goods id为1的一级分类下所有商品
/categories/1/subcategories id为1的一级分类下的所有二级分类
/subcategories/2 id为2的二级分类
/subcategories/2/goods id为2的二级分类下所有商品
/goods/5 id为5的商品

6.3 RestFul API原理

RESTful API 是一种指REST设计风格的API,采用HTTP做传输协议,用一套协议来规范多种形式的前端和同一个后台的交互方式

用户在Android、IOS、PC等终端平台向服务端发送请求后,需要为每个平台的数据请求单独定义相应的返回格式,需要为每个平台单独写一个后台系统

而RESTful API 要求前端用一套协议来规范的语法格式发送请求,并与同一个后台系统交互,服务端只需要定义一个统一的响应接口(API)即可

学新通

传统API

  • http://localhost:8080/user/queryUser (GET查询用户)
  • http://localhost:8080/user/addUser(POST添加用户)
  • http://localhost:8080/user/updateUser (PUT更新用户)
  • http://localhost:8080/user/deleteUser (DELETE删除用户)

RestFul API

  • http://localhost:8080/user/1 (@GetMapping("/user/{userId}") 查询)
  • http://localhost:8080/user (@PostMapping("/user") 添加或修改)
  • http://localhost:8080/user (@PutMapping("/user") 修改)
  • http://localhost:8080/user/1 (@DeleteMapping("/user/{userId}") 删除)

6.4 RestFul API映射注解

请求方法 用途
@Controller 表明了这个类或方法是一个控制器,用于返回对象
@ResponseBody 将返回的Java对象转为JSON格式的数据
@RestController 包含了@Controller@ResponseBody
@RequestMapping 全注解,将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上
@GetMapping 接收GET的请求方式,等同于 @RequestMapping(value ="/user", method = RequestMethod.GET)
@PostMapping 接收Post的请求方式,等同于 @RequestMapping(value ="/user", method = RequestMethod.POST)
@PutMapping 接收Put的请求方式,等同于@RequestMapping(value ="/user", method = RequestMethod.PUT)
@DeleteMapping 接收Delete的请求方式,等同于@RequestMapping(value ="/user", method = RequestMethod.DELETE)
@RequestParam 将请求参数绑定到控制器的方法参数上
@PathVariable 接收请求路径中占位符的值
@RequestBody 接收前端传递给后端的json字符串中的数据(请求体中的数据的)

6.5 RestFul API操作

RestFul API接口响应的资源(返回给前端的数据格式)的表现形式是, @RestController@Controller标签相同,用于标注在类定义前面,使得类会被认定为Controller对象,用于告知Spring容器,该类所有方法的返回值需要以JSON或XML格式写到@ResponseBody

  • 可在控制类(@Controller类)上添加@ResponseBody 注解
  • 可在每个接口的方法上添加@ResponseBody 注解
  • 可把@ResponseBody注解提取到控制器上,这个控制器中所有的返回值会写到@ResponseBody
  • 可在控制类(@Controllerr类)上合并@Controller@ResponseBody成一个@RestController注解

RestFul API通过两种方式实现定义接口的URL

1.指定请求方式

  • @RequestMapping(value ="/user", method = RequestMethod.GET) 查询

2.特定请求方式

  • @PostMapping("/user") 添加或修改

HTTP的五种请求方法

请求方法 用途
POST 创建一个新的资源并返回新资源
GET 查询特定资源
PUT 修改资源的全部属性并返回修改后的资源
PATCH 修改资源的特定属性并返回修改后的资源
DELETE 删除资源

HTTP状态码

HTTP状态码 描述
2** 操作成功接收并处理
3** 重定向
4** 客户端错误,请求包含语法错误
5** 服务器错误,服务器在处理请求的过程中发生了错误

共用HTTP状态码

HTTP状态码 描述
400 参数格式错误(缺少或不符合要求)
401 用户需登录访问
403 用户无权限访问
409 资源冲突或资源被锁定(由于事务回滚造成的)
500 服务器通用错误(服务器程序错误)
503 服务当前无法处理请求(服务器忙)

GET请求

URL 描述
GET /categories 获取所有的一级商品分类
GET /categories/1 获取id为1的一级商品分类对象
GET /categories/1/goods 获取id为1的一级商品分类下所有商品
GET /categories/1/subcategories 获取id为1的分类下的所有子分类
GET /goods?name=电视机 &sort=price&order=acend 获取商品名称为电视机的商品,按照价格升 序排序

Get请求的HTTP状态码

HTTP状态码 描述
200 请求成功,数据在Response中返回

POST请求

URL 描述
POST /categories 创建一个新的一级商品分类
POST /categories/1/subcategories 在id为1的一级商品分类下创建一个二级分类
POST /subcategories/1/goods/1 在id为1的二级商品分类下增加id为1的商品
POST /orders/1000/payments 为id为1000的订单付款
POST /login 用户登录

Post请求的HTTP状态码

HTTP状态码 描述
201 新资源成功,数据在Response中返回
202 已经接受处理请求但尚未完成(异步处理)

PUT请求

URL 描述
PUT /categories/1 修改id为1的一级商品分类
PUT /subcategories/1 修改id为1的二级商品分类
PUT /goods/5/onshelves 将id为5的商品上架
PUT /goods/5/offshelves 将id为5的商品下架

PUT请求的HTTP状态码

HTTP状态码 描述
200 修改成功
202 已经接受处理请求但尚未完成(异步处理)

DELETE请求

URL 描述
DELETE /categories/1 删除id为1的一级商品分类
DELETE /categories/1/goods/5 在id为1的分类中将id为5的商品移除

Delete请求的HTTP状态码

HTTP状态码 描述
200 删除成功
202 已经接受处理请求但尚未完成(异步处理)

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhhaekba
系列文章
更多 icon
同类精品
更多 icon
继续加载