理解HTML HTTP URL和API

学习与网络编程相关或是python爬虫的时候,涉及到理解与互联网相关的一些概念,对这些概念理解的深度,最终决定了相关领域所能达到的高度。

HTML

HTM(Hyper Text Marked Language),即超文本标记语言。
比较通俗的定义:网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等)。浏览器按顺序阅读网页文件,然后根据标记符解释和显示其标记的内容,对书写出错的标记将不指出其错误,且不停止其解释执行过程,编制者只能通过显示效果来分析出错原因和出错部位。但需要注意的是,对于不同的浏览器,对同一标记符可能会有不完全相同的解释,因而可能会有不同的显示效果。

举个例子。在word文档里,我们可以编辑文字,图片,表格等等,可以对字体加粗、下划线。而在浏览器上我们如果想让编辑类似这样的效果该如何实现呢?就需要用到HTML语言。

在word里我们是通过自己设置字体,排版等实现对文字的排版,而在浏览器上,我们根据HTML语言的规则,“设置”浏览器将要以什么样的形式呈现我们的内容。

HTTP

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
HTTP是一个基于“请求与响应”模式的、无状态的应用层协议。
其中,‘请求’是指用户想服务器发起的资源请求,‘响应’是指服务器对用户的请求作出的响应,‘无状态’是指用户与服务器之间的这种连接是一次性的,服务器不保留与客户交易时的任何状态,第二次连接与第一次连接没有任何关系,‘应用层’是指HTTP协议位于应用层上,也就是架构在TCP协议上。

简单来说,网络上的各种资源平时都存储在服务器(server)上,如果我们想要浏览网页,或者下载文件(获取资源–requset),是需要通过因特网向服务器申请,申请过程中的“申请表”就是HTTP协议,服务器根据我们的“申请表”决定要不要将资源返回给我们(响应responce)。


这张图很好的揭示了HTTP协议的工作流程。

我们对HTTP协议的具体工作过程不做过多的阐述,忽略掉建立TCP连接这一步,重点来看看请求和响应的文件内容。

http请求

先看看申请表——HTTP请求中都需要哪些内容呢?
http请求一般由三部分构成:<请求行><请求头><请求体>
(1)请求行:
GET http://localhost:2172/api/Default/GetUserInfo?UserName=Alan_beijing HTTP1.1

HTTP协议对资源的操作方法(method)很多种,主要的方法如下所示:

通过url(资源的唯一标识符)和这些方法,HTTP协议可以对服务器上的这些资源进行操作,其中(GET、HEAD)是获取资源,(PUT POST PATCH DELETE)是对资源进行修改和删除。

图解如下:

(2)请求头:header

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q=0.9
Cache-Control:max-age=0
Connection:keep-alive
Host:localhost:2172
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36

看看请求头里都填写了哪些内容?

注意:header的格式一般是JSON格式。

(3)请求体:Request-Body
由于本示例使用的是Get请求,Get方法没有请求体。

http响应

再来看看服务器发给我们的“回执”包括哪些内容?
http响应一般由三部分构成:<状态行><响应头><响应体>;

状态行

由三个部分构成:<协议及其版本><状态码><描述>,

HTTP/1.1 200 OK;


简单理解,当状态码是200,表示请求成果,其他都是请求失败。

响应头

关于响应头,与请求头原理差不多,这里就不讲解了。

Cache-Control:no-cache
Content-Length:123
Content-Type:application/xml; charset=utf-8
Date:Sat, 27 Jan 2018 09:54:22 GMT
Expires:-1
Pragma:no-cache
Server:Microsoft-IIS/10.0
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET
X-SourceFiles:=?UTF-8?B?QzpcVXNlcnNcQWxhbl9iZWlqaW5nXHNvdXJjZVxyZXBvc1xIdHRwRGVtb1xIdHRwRGVtb1xhcGlcRGVmYXVsdFxHZXRVc2VySW5mbw==?=

URL

在WWW上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫URL(Uniform Resource Locator,统一资源定位符),它是WWW的统一资源定位标志,就是指网络地址。

API

应用程序接口(API)是基于编程语言构建的结构,使开发人员更容易地创建复杂的功能。它们抽象了复杂的代码,并提供一些简单的接口规则直接使用。

简单的说,就是程序员A写了一个函数,程序员B想要直接使用而不再重写,就可以用程序员A提供的接口(API)来访问这个函数。

the website is the api……
比如说爬虫技术,就是将网站当做是api接口,进而获取数据。

理解HTML HTTP API 和URL相关推荐

  1. 熊掌号历史php推送示例,百度熊掌号历史数据内容API提交URL整理小技巧

    原标题:百度熊掌号历史数据内容API提交URL整理小技巧 最近一直在关注有关网站百度熊掌号方面研究,从熊掌号的开通到,百度熊掌号H5页面改造,百度熊掌号的运营,到现在算是有一个全方位的认知,未来百度熊 ...

  2. APICloud,内置API及url调用百度地图导航

    内置API及url调用百度地图APP导航 方法中的两个参数,为自己当前位置的经纬度 function arouseMap(lon,lat){var location = $api.getStorage ...

  3. 开源语义理解框架 Clause API 文档:快速实现聊天机器人

    在上一篇文章<基于开源语义理解框架 Clause 实现聊天机器人 > 中,很多读者关心如何使用 Clause,在 Clause Wiki 文档中心 中也有很多指导使用的资料,现将 API ...

  4. puppeteer api_使用Node.js和puppeteer API从URL创建PDF文件

    puppeteer api We will continue using Node.js and puppeteer which is a node library. As we saw in our ...

  5. JAVA零学习之基础归纳(十八)--网络编程、协议、IP、基本API、URL、socket等

    [Java程序可以非常方便的访问互联网上的 HTTP服务.FTP服务等,并可以直接取得互联网上的远程资源,还可以向远程资源发送 GET.POST请求] 一.网络编程 1.1 网络概念和分类 所谓计算机 ...

  6. 零基础理解什么是API(网络请求)

    没有学编程之前我以为是精酿啤酒的一种,IPA 啤酒即印度爱尔啤酒. 一个码农第一次去酒吧点酒,老板,给我来一杯API,恰好老板是从程序员转行开酒馆,老板抛给你一个404,这个时候第一次去酒吧的码农就尴 ...

  7. java url api_深入阅读java api之URL

    声明: 不是很有空,慢慢完善 1. 若创建的类的实例需要较大的灵活性,则通过反射来进行创建 2. 创建的类需要用指定的类载入器载入进来 3. new URL().openConnection() 若u ...

  8. java 短链接实现方案_java利用百度短网址api实现URL长短互换工具类分享

    * 原理: * 1,url以post方法传递到了http://dwz.cn/create.php的url参数内; * 2,dwz.cn先检查是否符合转化的要求 * 3,dwz.cn将url的参数提取为 ...

  9. Android使用bit.ly的api获取url 短连接

    bit.ly相比起twitter和google的短连接服务,使用起来更为简单(谷歌的弄了一晚上也没弄出来)而且使用的是get方法,测试和上手都比较容易,下面是使用android 原生类写的通过长url ...

最新文章

  1. 【第23周复盘】懒癌犯了,拖到今天!
  2. java视频流传输_java – 使用Xuggler流式传输视频
  3. java中string范围_java中long parseLong(String s)方法中string(十进制数字)的范围?
  4. npm和package.json那些不为常人所知的小秘密
  5. 编译Qtopia2.2.0
  6. cass坡度土方计算案例_南方cass几种土石方计算方法分析.doc
  7. 计算机专业入学教育报告,信息工程学院20级计算机专业入学教育大会和专业介绍会顺利召开...
  8. C#编程打字指法练习
  9. 孙子兵法始计篇读后感&心得(上)
  10. 深度至尊 GHOST XP SP3 纯净版 V4.0
  11. 牛顿冷却定律:在用户标签提取上的应用
  12. 唐伯虎的诗,可能是改编的
  13. 华为p10计算机器在哪,华为P10怎么连接电脑教程
  14. Oracle归档日志使用情况及自动清理
  15. c语言邻接表做公园导游系统,公园导游管理系统
  16. Pandas学习-Day3
  17. vanish高速反向代理服务器配置
  18. 史上最美女程序员:手写代码把人类送上月球
  19. iconfont 使用
  20. 以太网(ethernet)通信。DSP开发板28388D发送数据,电脑接收数据。使用的是UDP协议

热门文章

  1. 一些数据采集卡使用过程中常见问题
  2. Java主要应用于哪些方面 Java就业方向有哪些
  3. 如何隐藏Android模拟器的虚拟按键
  4. 金沙滩51单片机74HC138 三八译码器的应用
  5. html图片缩小属性,css怎么缩小图片?
  6. csp刷题总结(如此编码python版本)
  7. 惯性导航工作原理及系统分类
  8. git lfs官网翻译
  9. 爪哇国新游记之二十九----访问URL获取输入流
  10. Nature:13个维度,手把手教“研究er”如何做学术报告