欢迎访问 生活随笔!

ag凯发k8国际

当前位置: ag凯发k8国际 > 编程资源 > 编程问答 >内容正文

编程问答

通信 / http / 什么是 rest 接口 -ag凯发k8国际

发布时间:2024/10/14 编程问答 9 豆豆
ag凯发k8国际 收集整理的这篇文章主要介绍了 通信 / http / 什么是 rest 接口 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一、答案

一种使用 http 协议的规范,用 url 定位资源,用 http 描述操作 。

本质来讲,就是客户端通过 http 协议,向服务器发送请求,服务器做出响应,通过 http 向客户端返回数据。从理念上讲知道输入,知道输出,但是不清楚内部操作,故称为“接口”。

二、诞生原因

转自:https://blog.csdn.net/weixin_38087538/article/details/82838762

既然用普通的 http 协议即可实现的功能,为什么要称为 rest 接口呢?实际上 rest 接口是在 http 协议基础上,定义了一种适用于当前前后端分离的 http 协议使用规范。没有该规范之前,前后端分离时面临的问题如下:

  •  很多人在错误的使用 http 协议定义接口,比如各种各样的命名,什么 getuserinfobyid, deletebyid 之类的、有状态和无状态请求混用。
  •  对于 http 协议本身提供的规则并没有很好的利用。
  • 所以,为了更好的解决这些问题,干脆就定义一套规范,这套规则并没有引入新的东西,无非就是对 http 协议本身的使用做了一些约束,比如说

  •  rest 是面向资源,每一个 uri 代表一个资源。
  •  强调无状态化,服务器端不能存储来自某个客户的某个请求中的信息,并在该客户的其他请求中使用。
  •  强调 url 暴露资源时,不要在 uri 中出现动词。
  •  合理的利用 http 状态码、请求方法。
  • 三、详细说明

    转自:https://www.cnblogs.com/sandy-1128/p/rest-sandy-0413.html

    知乎大神 ivony 有句话说的好:

    url 定位资源,用 http 动词(get、post、delete、put)描述操作。

    咱们不解释 rest 是哪几个单词的首字母,说了也不知道,翻译成中文就是表现层状态转移,我是弄不懂。

    在设计 web 接口的时候,rest 主要是用于定义接口名,接口名一般是用名次写,不用动词,那怎么表达“获取”或者“删除”或者“更新”这样的操作呢 ? 用请求类型来区分。

    比如,我们有一个 friends 接口,对于“朋友”我们有增删改查四种操作,怎么定义rest接口?

  • 增加一个朋友,uri: generalcode.cn/v1/friends 接口类型:post

  • 删除一个朋友,uri: generalcode.cn/va/friends 接口类型:delete

  • 修改一个朋友,uri: generalcode.cn/va/friends 接口类型:put

  • 查找朋友,uri: generalcode.cn/va/friends 接口类型:get

  • 上面我们定义的四个接口就是符合 rest 协议的,请注意,这几个接口都没有动词,只有名词 friends,都是通过 http 请求的接口类型来判断是什么业务操作。

    举个反例:generalcode.cn/ va / deletefriends 该接口用来表示删除朋友,这就是不符合 rest 协议的接口。

    一般接口的返回值是 json 或者 xml 类型的,大多是 json 格式。

    用 http status code 传递 server 的状态信息。比如最常用的 200 表示成功,500 表示 server 内部错误,403 表示 bad request 等。(反例:传统web开发返回的状态码一律都是200,其实不可取。)

    那这种风格的接口有什么好处呢?前后端分离。前端拿到数据只负责展示和渲染,不对数据做任何处理。后端处理数据并以 json 格式传输出去,定义这样一套统一的接口,在 web,ios,android 三端都可以用相同的接口,是不是很爽?!

     

    (saw:game over!)

    总结

    以上是ag凯发k8国际为你收集整理的通信 / http / 什么是 rest 接口的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得ag凯发k8国际网站内容还不错,欢迎将ag凯发k8国际推荐给好友。

    网站地图