Restful到底是什么?

   在网上查询了好几篇的关于什么是restful,结合自己平时设计接口的代码经历,将自己对于restful的理解分享给大家,不正之处,望大家不吝赐教。

    restful其实就是设计具有rest风格的api,如何设计一个具有restful风格的api呢,主要体现在以下资源描述、请求方法、请求参数等方面:

    1:资源描述

    我们知道,服务器端对于资源的描述是采用了统一资源描述符---URI,中文叫统一资源描述符,具体一点就是服务器中资源的具体描述,资源可以是音乐、视频、文本和图片等,服务器对每个资源都有一个URI,例如/musics/hiphop/01.mp3,对应于音乐层级下,hiphop层级下01这个音频文件。而URI最经常被体现为URL,一个设计良好的URI通常如下:

/{resources}/{resource_id}/{sub_resources}/{sub_resource_id}/{sub_resource_property}

 能让人看起来就大概知道该接口的意义,资源的描述具有很强的层级意义,另外该URI中没有动词,全部由名词组成,这是restful中一个重要的特点,但并不是说完全不能有动词,对于实在没办法的接口,可以使用actions作为说明:

/v1/users/{user_id}/name/actions/change// 名称修改

    总结一下就是让API由具有含义的单词描述而成,可以使用-、_拼接单词,使得对于资源的描述更加具有意义,尽量不要使用动词。

2:请求方法

    目前restful是借助于http实现的,那么我们可以使用GET/POST/DELETE/PUT等方法进行资源操作,这部分很好理解,即遵循标准的HTTP协议即可。

3:请求参数

    设计restful风格的API时,可以使用?拼接一些词来进行资源过滤,例如:

http://taobao.com/shoes?year=2018&sex=man&location=hz

    路径后的几个字段为我们对shoes下的资源进行了过滤,筛选出符合我们需求的资源。

总结:设计出符合上述几个特点的API即可称为restful api,注意restful并不是什么新产物或者协议,它只是软件设计时的一种规范,当然,如果你不遵循这种协议也可以设计出可以使用的软件,但是如果能遵循一定的标准,对于协作开发还是有很大好处的。

猜你喜欢

转载自blog.csdn.net/fly_rice/article/details/81453523