一,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端).