[ HTTP框架修炼之道 | 青训营笔记 ]

59 阅读5分钟

1.Http框架 HTTP框架是一种用于构建Web应用程序的软件架构,它基于HTTP协议,提供了一系列的功能和接口,使得开发者可以更方便地处理客户端和服务器之间的通信、数据处理、路由、安全、缓存等问题。

2.工作原理(流程): 客户机与服务器建立连接后,浏览器可以向web服务器发送请求并显示收到的网页,当用户在浏览器地址栏中输入一个URL或点击一个超连接时,浏览器就向服务器发出了HTTP请求,请求方式的格式为:统一资源标识符、协议版本号,后边是MIME(Multipurpose Internet Mail Extensions)信息包括请求修饰符、客户机信息和可能的内容。该请求被送往由URL指定的WEB服务器,WEB服务器接收到请求后,进行相应反映,其格式为:一个状态行包括信息的协议版本号、一个成功或错误的代码,后边服务器信息、实体信息和可能的内容。即以HTTP规定的格式送回所要求的文件或其他相关信息,再由用户计算机上的浏览器负责解释和显示。

3.特点: 1)支持客户/服务器模式。 2)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 3)灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 4)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 5)无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

4.HTTP框架有很多种,例如Python的Flask和Django,Java的Spring和Struts,Ruby的Rails和Sinatra,JavaScript的Express和Koa等。不同的HTTP框架有不同的特点和优势,但它们都遵循了一些共同的原则和模式,例如:

  • 请求-响应模型:HTTP框架都是基于请求-响应模型的,即客户端向服务器发送一个HTTP请求,服务器根据请求内容进行处理,并返回一个HTTP响应给客户端。请求和响应都包含了一些元数据(如方法、状态码、头部)和主体(如HTML、JSON、文件等)。
  • 中间件:HTTP框架都支持中间件的概念,即一些可以在请求和响应之间执行的函数或对象,用于实现一些通用的功能,如日志、身份验证、错误处理、压缩等。中间件可以按照一定的顺序组成一个链条,每个中间件可以对请求或响应进行修改或拦截,并决定是否继续执行后续的中间件或处理函数。
  • 路由:HTTP框架都提供了路由的功能,即根据请求的URL或其他条件,将请求分发到不同的处理函数或控制器上。路由可以支持静态或动态的匹配规则,以及参数或查询字符串的提取。路由也可以支持嵌套或分组,以便实现模块化或权限控制。
  • 模板:HTTP框架都提供了模板的功能,即一种用于生成动态HTML文档的语言或工具。模板可以使用变量、表达式、控制流等语法,来根据数据生成HTML内容。模板也可以支持继承或包含,以便实现复用或分离。

HTTP URI

  1. 定义 URL 是 URI 的一个子集。它是 Uniform Resource Locator 的缩写,译为“统一资源定位 符”。
  2. URL 的一般格式为(带方括号[]的为可选项):protocol :// hostname[:port] / path / [;parameters][?query]#fragment
  3. URL 的格式由三部分组成:

①第一部分是协议(或称为服务方式)。

  • ②第二部分是存有该资源的主机 IP 地址(有时也包括端口号)。

    ③第三部分是主机资源的具体地址,如目录和文件名等。

    第一部分和第二部分用“://”符号隔开,

    第二部分和第三部分用“/”符号隔开。

    第一部分和第二部分是不可缺少的,第三部分有时可以省略。

URL 和 URI 区别

URI:统一资源标志符(Uniform Resource Identifier)URL:统一资源定位符(uniform resource location)说白了,URI 与 URL 都是定位资源位置的,就是表示这个资源的位置信息,就像经纬度一样可以表示你在世界的哪个角落。URI 是一种宽泛的含义更广的定义,而 URL 则是 URI 的一个子集,就是说 URL 是 URI 的一部分。换句话说,每个 URL 都是 URI,但是不是每个 URI 都是 URL 的。

总结:学习HTTP框架的目的是为了能够快速地开发出高效、可扩展、可维护的Web应用程序。