接口的实现原理

news/2024/12/22 18:40:17/

一,http协议的请求方法(8种)
http1.0定义了三种请求方法:get,post,head
http1.1新增了五种请求方法:options,put,delete,trace,connect
Get:请求指定的页面信息,并返回实体。Get可以说是最常见的,它本质就是发送一个请求来获取服务器上的某一资源,资源通过一组http头和呈现数据返回给客户。
Head:类似于get请求,只不过返回的响应中没有指定的内容,用于获取报头。
Post:向服务器提交数据。这个方法用途广泛,几乎所有的提交操作都是靠这个完成。
Put:从客户端向服务器传送的数据取代指定的文档的内容。Put与post都是向服务器发送数据,他们之间有一个重要的区别,put通常指定了资源的存放位置,而post没有,post的数据存放位置由服务器自己决定。
Delete:请求服务器删除指定的页面。删除某一个资源
Connect:http1.1协议中预留给能够将链接改为管道方式的代理服务器。
Options:允许客户端查看服务器的性能。返回服务器针对特定资源所支持的http请求方法。
Trace:回显服务器收到的请求,主要用于测试或者诊断。
注意:
1方法名称区分大小写,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405;当服务器不认识或者不支持对应的请求方法时,应返回状态码501。
2http服务器至少应该实现get,post,head方法,其他方法都是可选的,此外除上述方法,特定的http服务器支持扩展自定义方法。
二,接口规范和接口文档
接口规范的重要性
无规矩不成方圆,为了app开发人员与后台接口开发人员更好的配合,所以我们需要制定接口规范。接口,是APP端与服务器端交互密不可分的环节,接口的规范性会直接影响双方对接过程中的效率和质量。本着快速高效开发的目的性,避免对接过程中的错误率,接口应当有规范的约束。
{
“list”:[
{
“name”:“张三”,
“id”:“100”
},
{
“name”:“李四”,
“id”:“101”
}
],
“object”:{
“title”:“demo”,
},
“message”:“数据加载成功”,
“status”:“SUCCESS”,
“page”:“1”,
“number”:“2”,
}
List:只存储list数据,为空时也返回一个空的list(“list”:[])。
Object:只存储实体类数据。
Message:返回的提示消息。例如:加载成功,查询失败,登录成功等
Status:接口状态,比如 SUCCESS-成功,ERROR-失败(静态‘变量’大写)。
Page和number:其他可选字段,例如页数,list条数等根据项目需求来指定字段。

接口文档
后台接口人员和移动端开发人员之间的配合肯定少不了接口文档这种利器!像中大型项目可能一个接口包含的字段就有上百个,如果没有接口文档,仅仅靠两个人口头交流,那估计一天就能搞定几个接口配合。
接口文档有哪几种形式哪?
1 Excel,Word等文档形式。(古老方式)
2 接口管理开源网站(高效便捷)
Eolinker

一个完整的接口需要由以下几部分组成
请求地址 http://127.0.0.1:8080/x/xx/xxx
请求方式 post,get
请求参数 id:‘1’,name:‘小明’
返回参数 json
返回实例
三,接口的编写和接口的数据格式
接口存在的意义就是实现‘多重继承’,准确的来说应该叫做‘多重实现’,因为一个PHP类只能有一个父类,而一个类却可以实现多个接口。现在主流的通信接口返回的数据主要有json和xml两种格式。
Json的优势是生成方便,体积小,更便于传输,缺点是不便于阅读。
Xml的优点是便于阅读,但是体积大,生成较json要麻烦的多。

Json方式封装通信接口

Xml方式封装通信接口(自学)
四,使用postman和fiddler测试接口数据
1,postman
Postman是一个Chrome扩展,能提供强大的web api & http请求调试功能。Postman能够发送任何类型的http请求,支持get,put,post,delete等,请求头中可以附带任何数量的headers信息。
Postman支持不同的认证机制(basic,digest,OAuth)
Postman非常简单易用,通过填写url,header,body等就可以发送一个请求,这对于我们平时做一些简单的测试是够用的。
Postman有一个‘集合’功能,用于存储所有请求相同的api/域,这个功能能方便我们重新发送请求。

2,Fiddler
Fiddler 是好用的web api 调试工具之一,他能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,fiddler是以代理web服务器的形式工作的,使用fiddler无论对开发还是测试来说,都有很大帮助。
五,浏览器跟服务器交互的真个生命周期
1,浏览器和服务器交互是通过socket
2,浏览器和服务器交互的语法:http协议
3,浏览器要和服务器交互的目的:获取服务器资源(html,图片,js,css)
4,服务器要做的就是想尽办法,满足浏览器的需求。所以一旦浏览器请求的是动态页面的时候,服务器就要创建页面类的对象并执行里面的方法,最后将生成的html代码返回给浏览器。

浏览器服务器交互详解:->>>首先是(client客户端)端向服务器发起请求通过socket建立通道,如果服务器发现是自己可以处理的静态页面,那么服务器就会找到相应的html页面,就直接返回客户端需要的html代码,如果发现是自己解决不了的动态页面,服务器就会找到自己和框架之间互相通信的API(可扩展程序):
8.1:API又将请求网站程序,网站程序调用HttpRuntime类的静态方法处理请求,接下来HttpRuntime将分析client端发送过来的请求报文,将请求报文封装到一个叫做HttpWorkerRequest类对象中。
8.2:创建HttpContext对象,在这里就需要使用到HttpWorkerRequest了,其中HttpContext中主要包括了HttpRequest(ps:其中包含了客户端所有的请求信息:Form,QueryString查询字符串…)和HttpResponse(ps:主要包含了TextWrite(文本写入)对象用来保存要向客户端输出的信息)
8.3:通过HttpApplicationFactory(HttpApplication工厂)【HTTP应用程序工厂】先检查有没有现成的HttpApplication,如果有,直接拿过来用,没有则创建一个新的来使用,因为HttpRuntime不能处理那么多请求所以每一个请求就创一个HttpApplication对象来处理。
接下HttpApplication对象调用ProcessRequest(处理请求)执行其中的19个委托对象(也叫做执行请求管道),在第八个事件时通过反射的方式创建被请求的页面类对象,并转成IHttpHandler接口(ps:转成接口为了统一调用,让服务器识别,不然服务器不知道如何调用),
接下来在第十一个事件和第十二事件之间,执行页面类对象里面的ProcessRequest方法,其实ProcessRequest调用的父类的ProcessRequest方法,在父类的方法中,父类调用了父类的FramworkInitalize()方法,但因为页面类重写了此方法,所以执行的就是当前页面类的FramworkInitalize(),在这个方法中就包含创建控件树的方法_buildControTree()方法,最后在调用ProcessRequestMain方法,在此方法中完成整个页面生命周期(ps:在执行页面前一部分时,先执行后台代码对控件树进行修改,然后调用Render方法遍历控件树,然后每个控件再调用本身的Render方法遍历子节点,最后执行生命周期最后一部分,再通过HttpApplication对象返回到服务器,再由服务器返回Client端).


http://www.ppmy.cn/news/314965.html

相关文章

java 接口 详解

目录 一、概述 1.介绍 : 2.定义 : 二、特点 1.接口成员变量的特点 : 2.接口成员方法的特点 : 3.接口构造方法的特点 : 4.接口创建对象的特点 : 5.接口继承关系的特点 : 三、应用 : 1.情景 : 2.多态 : ①多态的传递性 : ②关于接口的多态参数和多态…

ZYNQ学习之pl和ps接口

1、PL和PS的接口类型总共有两种: (1)功能接口:AXI、EMIO、中断、DMA流控制、时钟调试接口。 (2)配置接口:PCAP、SEU、配置状态信号和Program/Done/Init信号。这些信号连接到PL内配置模块的固定逻…

API接口之webservice接口

一、准备工作:apache cxf,axis,httpclient等,目前流行是用cxf,本节也是用cxf实现 1.引入apache cxf包,点击----->apache-cxf-2.6.16下载 2.下载完成后解压放入项目lib目录下重新编译,如下图 二、实现方法: 1.webs…

xilinx PYNQ PS与PL的接口说明

PS/PL Interfaces Zynq在PS和PL之间有9个AXI接口。 在PL方面,有4x AXI Master HP(高性能)端口,2x AXI GP(通用)端口,2x AXI Slave GP端口和1x AXI Master ACP端口。 PS中还有连接到PL的GPIO控制…

ZYNQ开发系列——使用AXI4LITE接口进行PS和PL交互

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列——使用AXI4LITE接口进行PS和PL交互 前言PS端AXI接口AXI4LITE slave模块的设计后记 前言 前面我们讲到使用AXI4LITE来作为总线接口来实现PS和PL的交互。同时我…

ZYNQ 应用笔记(2)PS/PL接口

相比传统的SOC 芯片,Xilinx 公司ZYNQ 的最大优势在于,除了内嵌的硬核ARM 处理器自带的IO接口之外,能够利用FPGA 自由地构建符合应用需求的IO外设和基于verilog/HDL的算法。这给嵌入式系统设计带来的巨大的灵活性。 ZYNQ 分成所谓的Processing…

面向对象——接口

接口:接口是一种用来定义程序的协议,它描述可属于任何类或结构的一组相关行为,可以把它看成是实现一组类的模板。接口可有方法、属性、事件和索引器或这4种成员类型的任何组合构成,但不能包含字段。 类和结构可以像类继承基类一样…

PS4 eye camera v2 ROS测试

For the I-RC ps4 eye camera 是一款性价比很高的双目摄像头,之前已经有人设计完成了一代产品的ROS驱动程序,代码见GitHub[1],今天要测试的是去年发布的新款摄像头. 一代摄像头二代摄像头 ps4 camera 接口是USB3.0 的一个衍生版本,需要进…