一.关于RESTful API:
RESTful API它是一种Web API的设计风格和开发方式,它遵循一组约束和属性,其中最重要的是客户端和服务器之间的无状态通信。在RESTful API中,资源通过URI进行标识,并且使用标准的HTTP方法,比如GET,POST,PUT,DELETE等进行操作,以及使用HTTP状态码和一些自定义的错误码来表达状态和错误信息,RESTful API的设计应该具有可读性,可维护性,可扩展性以及可靠性的特点。
二.常见的接口请求方式:
1.GET方法:
GET方法用于从服务器上获取资源,通过请求参数获取数据,请求数据放在URL的后面。将请求参数以键值对的形式附在URL的末尾,并用问号"?"分隔URL和参数,用“&”分隔多个参数,使用GET方法比较简单,容易使用,但是GET方法不适合传输大量数据。因为GET方法受URL长度的限制,所以传输的数据量比较小。由于GET方法传输数据的这个过程是用户可见的,所以GET方法可能会泄漏私密信息,比如密码等。
2.POST方法:
POST方法用于向服务器提交数据,通过请求传递数据,请求数据放在请求实体中,将参数放在请求体中,以表单的形式提交到服务器。通过这种方式可以传输大量的数据,但是需要服务器进行解析。POST方法在传输数据的过程中是对用户不可见的,因此,POST方法的安全性较高。
3. PUT方法:
PUT方法用于更新服务器上的资源,通过发送请求体传递数据,请求数据放在请求体中,PUT与POST类似,但是PUT的主要作用是用来更新服务器上的资源。PUT请求中的参数应该表示为完整的资源,而不是仅仅更新部分字段。
4.DELETE方法:
DELETE方法是用来删除服务器上的资源,通过请求参数传递数据,请求数据放在URL的后面,用于删除服务器上的资源,使用DELETE方法通常不需要传递参数,因为URL本身就表示要删除的资源。
以上是最常用的RESTful API接口请求方式。除此之外,还有一些非标准的请求方式,比如OPTIONS,HEAD等。
三.POST与PUT的区别
POST和PUT方法都是HTTP的请求方法,用于将请求数据发送至Web服务器用以创建或者是更新资源,两个方法的主要区别如下:
1.用途:
POST用于在Web服务器上创建资源,而PUT用于更新服务器上现有的资源。
2.幂等性:
幂等性就是用户对于同一个操作发起的一次或者多次请求的结果是一致的,也就是说不管是发送一次还是多次请求结果都是一样的。
PUT方法是幂等的,这就意味着PUT方法的多个请求将具有相同的结果,而POST不是幂等的,因为POST方法的每一次请求都会创建一个新的资源。
3.可撤销性:
PUT方法的请求具有可撤销性,如果PUT方法的请求失败或者是取消,对服务器的状态没有影响。但是,POST方法是不能被撤销的,因为每一个请求都会创建一个新的资源,对服务器的状态有影响。
4.对URL的处理:
在PUT请求中,URI标识要更新的资源,而在POST请求中,URI标识要在其下创建新资源的父资源。
5.安全性:
PUT请求是安全的,因为PUT请求它只会更新资源,不会更改服务器的其他状态。而POST请求不是安全的,因为POST请求用于新建资源,所以,有可能会更改服务器上的状态,比如在数据库库中插入新的数据。
举个例子:假设我们有一个管理贴吧的小程序,我们希望在上边新增一篇贴子
当我们使用POST请求时,我们会想服务器发送一个请求,其中包含要发布的贴子数据。随后,服务器就会创建一个新的文章资源,并将其URI返回给客户端。
而当我们使用PUT请求时,我们会向服务器发送一个请求,其中包含了要更新的贴子数据和要更新贴子的URI。服务器就会使用该请求中提供的数据更新现有的贴吧资源。
四.使用场景
1.POST请求使用的场景
1.创建资源:当客户端需要在服务器上创建新的资源时,就应该使用POST请求。
2.表单提交:当客户端需要向服务器提交一个表单数据时,就可以使用POST请求。
3.文件上传:当客户端需要上传文件时,就应该使用POST请求,比如,在社交媒体应用中,用户可以使用POST请求来上传图片或者视频。
2.PUT请求使用场景
1.更新资源:当客户端需要更新在服务器上的现有资源时,就应该使用PUT请求。
2.同步资源:当客户端需要与服务器上的资源进行同步时,就应该使用PUT请求。比如,在博客应用程序中,用户可以使用PUT请求将他们的本地笔记本与服务器上的所以笔记本同步。
3.替换资源:当客户端需要完全替换服务器上的资源的时候,需要使用PUT请求,比如,在云存储的应用程序中,用户可以使用PUT请求完全替换服务器上的文件或者是上传一份完整的文件。