目录
API是什么
API简称接口,就是预先定义的函数,目的是让应用程序或者开发人员具有访问指定网络资源的能力,而又无需关心关心访问的源码,或理解内部工作机制的细节。
Restful是什么
不同的开发者对获取资源的接口设计,呈现出多战多样的接口,为了是接口具有规范性,能够要很好的可读性以及移植性,Restful风格就此产生。
REST 是一种架构风格,表示的是Representational State Transfer 表现状态转移,客户端通过访问url来获得网络上的资源表征,获得资源表征来抓变应用的状态。网络中的所有的数据可分为(增删改查)四种操作,通过这四种操作获取到的则是分布在网络中的资源,将一切数据视为资源是REST与其他架构风格最大的不同之处。
使用原理
REST约定所有的请求在网络中都是一种资源,对于不同的资源操作方式可以分为 Get、Put、Delete、Post动词进行区分。协议可以是https,http安全性高就是用https。
GET | 对应select:是从服务器查询,能够在服务器经过请求的参数区分查询的方式。 |
POST | 对应Create:在服务器新创建一个资源,调用insert操做。 |
PUT | 对应update操做:在服务器更新资源,调用update操做。 |
DELETE | 对应DELETE操做,从服务器删除资源,调用delete语句。 |
常见的状态码
200系列 | 请求成功 201 create 用户创建或修改数据成功 202 Accept有一个请求进入后台排队 204 No Content 删除数据成功 |
400 系列 | 用户发送的请求有错误,服务器没有进行新建或修改操作 401用户没有权限 用户名,密码错误 403 用户得到授权,但是访问被禁止 404 用户发出的请求是不存在的记录,服务器没有进行操作 406用户请求的格式不对 410 用户请求的资源被永久删除,不会被诶获得 |
500 | 服务器错误,用户无法进行判断是否请求成功 |
200 系列是成功的,400系列是客户端,500系列是服务端。
实例演示
1、新建springBoot项目
2、新建BookController类并新建RestFul风格代码。
3、/books/api/v1 :v1代表接口版本
4、增删改查的请求路径都是book,通过method = RequestMethod.PUT/GET/POST/DELETE进行区分。
package com.aaa.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping("/books/api/v1")
public class BookCtroller {
@RequestMapping(value = "book", method = RequestMethod.PUT,produces = {"application/json;charset=UTF-8"})
@ResponseBody
public String putMethod() {
return "putMethod";
}
@RequestMapping(value = "book", method = RequestMethod.DELETE, produces = {"application/json;charset=UTF-8"})
@ResponseBody
public String deleteMethod() {
return "deleteMethod";
}
@RequestMapping(value = "book", method = RequestMethod.POST,produces = {"application/json;charset=UTF-8"})
@ResponseBody
public String postMethod() {
return "postMethod";
}
@RequestMapping(value = "book", method = RequestMethod.GET,produces = {"application/json;charset=UTF-8"})
@ResponseBody
public String getMethod() {
return "getMethod";
}
}
5、前端页面Ajax通过不同的访问类型访问后端资源。
$.ajax({
url: "/books/api/v1/book",
type: "DELETE", // 根据业务需求,配置不同的动词 PUT/GET/POST/DELETE
dataType: "json",
success: function(data) {
alert(data);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("请求错误");
}
})
总结: RestFul风格约定,请求的都是网络资源,通过规范请求,按照http的put/get/delete/post等访问动词对接口路径进行区分,从而达到接口的风格统一等优点。