rest风格的get加密字符串怎么接收_RESTful Api的设计与风格,你该学一下咯

0525fa510cb989847bff4bfebc7589bb.png

REST的重要概念

REST全称是Representational State Transfer,中文意思是表征性状态转移。RESTful是指具有REST表征的web架构风格,并非必须遵守的规则。

REST分离了API的结构和逻辑,主要应用于客户端和服务器交互类的软件。基于这种风格设计的软件更加简洁,更有层次,更易于实现缓存等机制。当REST架构的约束条件作为一个整体应用时,将生成一个可以扩展到大量客户端的应用程序。它还降低了客户端和服务器之间的交互延迟。统一界面简化了整个系统架构,改进了子系统之间交互的可见性。REST简化了客户端和服务器的实现,而且对于使用REST开发的应用程序更加容易扩展。

Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答。

另一个重要的 REST 原则是分层系统,分层系统指组件无法了解它与之交互的中间层以外的组件。分层系统限制整个系统的复杂性,保证底层的独立性。

这里大家可以关注一下我的个人专栏《PHP进阶集中营》,每天会给大家即时分享一个最新的php技术资讯,有优秀的PHP技术内容,也欢迎分享在我的专栏。

PHP进阶集中营​zhuanlan.zhihu.com
dcf43fa59c725aeacab34f79948c103e.png

RESTful风格的7种具体特征:

1. 采用URI标识资源

RESTful Web API采用面向资源的架构,所以首先需要考虑的是有哪些资源可供操作。一个资源必须具有一个或者多个标识,在restful中使用URI作为资源的标识。作为资源标识的URI最好具有“可读性”,这用更容易被使用。除此之外,标识资源的URI还应该具有“可寻址性(Addressability)”。也就是说,URI不仅仅指明了被标识资源所在的位置,而且通过这个URI可以直接获取目标资源。(URI具有URL和URN两种主要的表现形式,只有URL具有可寻址性,所以我们最好采用一个URL作为资源的标识。)

2. 使用“链接”关联相关的资源

REST是使用标准的HTTP方法来操作资源的,但仅仅因此就理解成带CURD的Web数据库架构就太过于简单了。这种反模式忽略了一个核心概念:"超媒体即应用状态引擎(hypermedia as the engine of application state)"。 超媒体是什么?当你浏览Web网页时,从一个连接跳到一个页面,再从另一个连接跳到另外一个页面,就是利用了超媒体的概念:把一个个把资源链接起来。要达到这个目的,就要求在表述格式里边加入链接来引导客户端。如使用<a>的href属性关联资源、用url来链接项目所有者和项目地址。

3. 使用统一的接口

统一接口包含了一组受限的预定义的操作,不论什么样的资源,都是通过使用相同的接口进行资源的访问。接口应该使用标准的HTTP方法如GET,PUT和POST,并遵循这些方法的语义。

4. 使用标准的HTTP方法

7个常用的HTTP方法:GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS。首先GET、HEAD和OPTIONS这三个HTTP方法旨在发请求以获取所需的信息。其他四种(POST、PUT、PATCH和DELETE),旨在针对目标资源作添加、修改和删除操作。具体如下:

GET:从服务器取出资源(一项或多项)。

POST:在服务器新建一个资源。

PUT:在服务器更新资源(客户端提供改变后的完整资源)。

PATCH:在服务器更新资源(客户端提供改变的属性)。

DELETE:从服务器删除资源。

HEAD:获取资源的元数据。

OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。[旨在发送一种“探测”请求以确定针对某个目标地址的请求须具有怎样的约束,然后根据其约束发送真正的请求。(“跨域资源”的预检 )]

5. 安全性与幂等性

GET、HEAD和OPTIONS均被认为是安全的方法,因为它们旨在实现对数据的获取,其它4个HTTP方法,由于它们会导致服务端资源的变化,所以被认为是不安全的方法。

幂等性在这里是指服务器状态的变化。如果一个方法重复执行多次,产生的效果是一样的,就说该资源是幂等方法 (在网速不够快的情况下,客户端发送一个请求后不能立即得到响应,由于不能确定请求是否被成功提交,所以它有可能会再次发送另一个相同的请求,幂等性决定了第二个请求是否有效。)七种HTTP方法中只有POST是一个非幂等的方法。由于DELETE和PATCH请求操作的是现有的某个资源,所以它们是幂等方法。对于PUT请求,只有在对应资源不存在的情况下服务器才会进行添加操作,否则只作修改操作,所以它也是幂等方法。 因为POST是进行添加操作,如果服务器接收到两次相同的POST操作,将导致两个相同的资源被创建,所以POST是一个非幂等方法。

6. 支持多种资源表示方式

资源和资源表示是两个不同的概念,资源表示是资源的表现形式。对于Web来说,目前具有两种主流的数据结构,XML和JSON,它们也是资源的两种主要的呈现方式。在设计Web API的时候,应该支持不同的资源表示。对于请求提交的资源,我们一般利用请求的Content-Type报头携带的媒体类型来判断其采用的表示类型。对于响应资源表示类型的识别有两种方式,一种是在URI中包含资源标识类型,另一种是采用“内容协商”,根据请求相关报头来判断它所希望的资源表示类型。(比如“Accept”和“Accept-language”报头可以体现请求可以接受的响应媒体类型和语言。)两者的差别是,前者具备浏览器兼容性,后者更智能。

7. 无状态性

RESTful只要维护资源的状态,而不需要维护客户端的状态。对于它来说,每次请求都是全新的,它只需要针对本次请求作相应的操作,不需要将本次请求的相关信息记录下来以便用于后续来自相同客户端请求的处理。

RESTful设计误区:

1. URI中包含动词。因为"资源"表示一种实体,所以应该是名词,URI不应该有动词,动词应该放在HTTP协议中。

2. URI中含有版本号。因为不同的版本,可以理解成同一种资源的不同表现形式,所以应该采用同一个URI。版本号可以在HTTP请求头信息的Accept字段中进行区分

RESTful架构与其他架构的区别

SOAP WebService

WebService是一种跨编程语言和跨操作系统平台的远程调用技术。

WebService通过HTTP协议发送请求和接受结果时采用XML格式封装,并增加了一些特定的HTTP消息头,这些特定的HTTP消息头和XML内容格式就是SOAP协议。

效率和易用性

SOAP由于各种需求不断扩充其本身协议的内容,导致在SOAP处理方面的性能有所下降。同时在易用性方面以及学习成本上也有所增加。

RESTful由于其面向资源接口设计以及操作抽象简化了开发者的不良设计,同时也最大限度的利用了HTTP最初的应用协议设计理念。

安全性

RESTful对于资源型服务接口来说很合适,同时特别合适对于效率很高,但是对于安全要求不高的场景。

SOAP的成熟性可以给需要提供给多开发语言的,对于安全性要求比较高的接口设计带来便利。

PHP进阶学习笔记、面试;文档、视频资源免费获取​shimo.im
375e24f4b5d0ae32f8d036dd78f2bd14.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550348.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

接口批量同步数据_千手接口平台+电商ERP,助德嵘大药房征战拼多多

拼多多对C端经营者来说&#xff0c;是一个处于红利期的第三方C端电商平台&#xff0c;进驻费比天猫低很多&#xff0c;而且流量成本也低&#xff0c;很多商家都跃跃欲试。但对于没有C端平台运营经验的商家&#xff0c;进驻后会发现几个"坑"&#xff1a;客单价低、退货…

php 接口有几种,【后端开辟】php接口有哪些范例?

接口是什么&#xff1f;运用接口(interface)&#xff0c;能够指定某个类必需完成哪些要领&#xff0c;但不须要定义这些要领的具体内容。接口是经由过程 interface 关键字来定义的&#xff0c;就像定义一个规范的类一样&#xff0c;但个中定义一切的要领都是空的。接口中定义的…

java是编译型语言还是解释型语言?

首先拿python和C说明&#xff0c;python运行速度慢&#xff0c;和C程序相比非常慢&#xff0c;因为Python是解释型语言&#xff0c;你的代码在执行时会一行一行地被python解释器翻译成CPU能理解的机器码&#xff0c;这个翻译过程非常耗时&#xff0c;所以很慢。而C/C程序是编译…

typedef函数指针_C语言函数指针之回调函数

1 什么是回调函数&#xff1f;首先什么是“回调”呢&#xff1f;我的理解是&#xff1a;把一段可执行的代码像参数传递那样传给其他代码&#xff0c;而这段代码会在某个时刻被调用执行&#xff0c;这就叫做回调。如果代码立即被执行就称为同步回调&#xff0c;如果过后再执行&a…

fedora 安装oracle 12c,Fedora 12下安装Oracle 11客户端

目标&#xff1a;将oracle-client(v11)安装到rdquo;/opt/oracle/rdquo;下准备好如下三个安装包&#xff0c;放在某个目录下&#xff0c;如&#xff1a;/root/software/ora目标&#xff1a;将Oracle-client(v11)安装到”/opt/oracle/”下准备好如下三个安装包&#xff0c;放在某…

轨迹跟踪主要方法_DELMIA教程:基于指令形式的机器人TCP轨迹局部跟踪方法

上一期为大家介绍了基于工具条中的“TCP Trace”命令按钮的全局TCP轨迹跟踪&#xff0c;之所以称之为全局轨迹跟踪&#xff0c;是因为只要命令被打开&#xff0c;机器人运行的全部轨迹都将实现跟踪。既然有全局TCP轨迹跟踪&#xff0c;那么就一定有局部TCP轨迹跟踪&#xff0c;…

[转帖]开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别

开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别 https://www.geek-workshop.com/thread-1860-1-1.htmlliamjeal电梯直达1# 发表于 2012-9-10 13:41:43 | 只看该作者 |只看大图 因CooCox用户数及影响力越来越大&#xff0c;CooCox团队也逐渐提高了对软件及代码协议的重…

qt 定时器累加值_零基础入门单片机定时器详解

一、基本定时器介绍在STM32中&#xff0c;基本定时器有TIM6、TIM7等。基本定时器主要包含时基单元&#xff0c;提供16位的计数&#xff0c;能计数0~65535。基本定时器除了计数功能以外&#xff0c;还能输出给DAC模块一个TRGO信号。基本定时器框图如下&#xff1a;二、时基单元介…

jvm 安装位置_简单了解JVM

1、JVM的位置&#xff1a;JVM是在操作系统上面的应用软件JVM虚拟机有三种如下&#xff1a;① Sun公司的HotSpot&#xff1b;    ② BEA公司的JRockit&#xff1b;    ③ IBM公司的J9 JVM&#xff1b;java虚拟机属于第一种&#xff1a;2、JVM的体系结构&#xff1a;3、类…

前端安全之 XSS攻击

参看&#xff1a; XSS的原理分析与解剖 前端安全 -- XSS攻击 web大前端开发中一些常见的安全性问题 1、前言 XSS 是面试时&#xff0c;hr提出来给我的&#xff0c;然后大体的浏览一遍&#xff0c;今天才查阅资料大体了解了它。 XSS 攻击&#xff1a;攻击者向HTML页面传入恶意的…

图片

转载于:https://www.cnblogs.com/water-1/p/11138418.html

idea 调节背景护眼_夜间用电脑亮瞎眼睛?这份夜间护眼指南来帮你。

题图&#xff1a;来自 Unsplash文/彭宏豪&#xff0c;笔名/安哥拉不知从什么时候起&#xff0c;「头秃」成了网友和周围人口中的一个高频词汇&#xff0c;似乎很多事情都离不了头秃——学到头秃、工作到头秃、熬夜到头秃等等&#xff0c;就连「突然」也渐渐演变成「秃然」。但对…

编写有效用例电子版_剖析用例设计方法的使用

今天给大家讲解的是用例设计方法的使用&#xff0c;在设计用例时该如何应用用例设计方法、设计出覆盖率高的测试用例呢&#xff1f;场景简介&#xff1a;普遍登录页面测试用例设计分析拿到需求&#xff0c;首先要做需求分析。我们看到登录界面有三个测试点&#xff1a;1.账号2.…

一个参数大小写引发的uploadify报错 Syntax error, unrecognized expression: #

上传控件uploadify 报错"Syntax error, unrecognized expression: #" 版本为 uploadify3.2 报错原因&#xff1a;参数ID【hidInfoId】小写错写成了大写。debug过程&#xff1a; ①&#xff1a;报错 "Syntax error, unrecognized expression: #" ②&#xf…

linux7 dns正向,Centos 7 搭建DNS正向解析和反向解析

Centos 7 搭建DNS正向解析和反向解析服务的三要素:安装-配置-启动1.使用yum安装DNSyum install bind -y2.修改配置文件vi /etc/named.conf修改以下内容&#xff1a;listen-on port 53 { any; };allow-query { any; };vi /etc/named.rfc1912.zones在末尾添加以下内容:zone "…

个人pkm软件 pim软件_个人申请软件著作权需要走哪些流程

软件著作权是企业的无形资产之一&#xff0c;它与商标权、专利权一起构成企业的知识产权&#xff0c;是企业投资、入股、融资等的有效无形资产&#xff0c;那么个人申请软件著作权需要走哪些流程&#xff1f;阅读完以下上海知识产权律师咨询为您整理的内容&#xff0c;一定会对…

最小值c语言 循环,C语言循环结构 -C语言求全班同学身高的最大值和最小值

编写程序&#xff0c;帮桐桐找出全班同学身高的最大值和最小值。问题分析输入&#xff1a;班级总人数&#xff1b;依次输入班上每位同学的身高值(float型)。输出&#xff1a;最大身高值和最小身高值(float型)。这是一个依次比较大小的问题&#xff0c;具体步骤为&#xff1a;1)…

Android底层开发技术实战详解——内核、移植和驱动

《Android底层开发技术实战详解——内核、移植和驱动》基本信息作者&#xff1a; 王振丽 丛书名&#xff1a; Android移动开发技术丛书 出版社&#xff1a;电子工业出版社 ISBN&#xff1a;9787121175930上架时间&#xff1a;2012-8-13出版日期&#xff1a;2012 年8月开本&…

mysql select in 不存在返回0_MySQL索引优化看这篇文章就够了!

来源&#xff1a;cnblogs.com/songwenjie/p/9410009.html本文主要讨论MySQL索引的部分知识。将会从MySQL索引基础、索引优化实战和数据库索引背后的数据结构三部分相关内容&#xff0c;下面一一展开(本文图片可点开放大)。一、MySQL索引基础首先&#xff0c;我们将从索引基础开…

《软件测试实战:微软技术专家经验总结》

《软件测试实战&#xff1a;微软技术专家经验总结》 基本信息 作者&#xff1a; 史亮 丛书名&#xff1a; 图灵原创 出版社&#xff1a;人民邮电出版社 ISBN&#xff1a;9787115345844 上架时间&#xff1a;2014-3-3 出版日期&#xff1a;2014 年2月 开本&#xff1a;16开 页…