zoukankan      html  css  js  c++  java
  • web框架

    web框架的原理

    • B/S架构: 底层也是一个socket模块收发信息
    • 本质: 互联网上两台机器之间通信(IP,端口,协议)
    • 所以在用户在浏览器上输入网址时,就给服务端发送数据,不能任意发,必须有一个统一的规则,以后浏览器发送请求也好,服务器回复响应信息也罢,都要按照这个规则来,这个规则就是HTTP协议
    • 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础.
      
      HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,定义了HTTP协议中现今广泛使用的一个版本——HTTP 1.1
      
      HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个“中间层”,比如代理服务器、网关或者隧道(tunnel)。
      
      尽管TCP/IP协议是互联网上最流行的应用,HTTP协议中,并没有规定必须使用它或它支持的层。事实上,HTTP可以在任何互联网协议上,或其他网络上实现。HTTP假定其下层协议提供可靠的传输。因此,任何能够提供这种保证的协议都可以被其使用。因此也就是其在TCP/IP协议族使用TCP作为其传输层。
      
      通常,由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。
      HTTP协议
    • HTTP协议收发消息的格式要求
      • 一个HTTP包含Header和Body两部分,其中body是可选的,http响应的Header中的有一个Content-Type表民响应的内容格式,如text/html表示HTML网页.
      • HTTP GET 请求格式:
      • HTTP 响应的格式:

    web框架初现

    '''框架第一版:函数版'''
    import socket
    sk = socket.socket()
    sk.bind(('127.0.0.1',8080))
    sk.listen()
    
    def login(url):
        return bytes('这是登录页面',encoding='utf8')
    def home(url):
        return bytes('这是主页面',encoding='utf8')
    
    URL_DIC = {
        '/login/':login,
        '/home/':home
    }
    
    
    while 1:
        conn,addr = sk.accept()
        data = conn.recv(9000)
    
        '''
        接收到一个bytes类型的符合http协议的一串字节
        都遵循了http协议规定的客户端和服务器之间的通信格式,
        '''
        '''
            GET / HTTP/1.1
    Host: 192.168.12.23:8000这是根目录
            如果在网址中输入192.168.12.23:8000/index/后都会发给服务端,可以根据这个来满足用户需求
        '''
        d1 = str(data,encoding='utf8').split('
    ')[0]
        url_f = d1.split(' ')[1] #经过接收到的数据处理后得到用户输入的命令
    
        '''
            http响应的格式: 协议版本 空格 状态码 空格 状态描述 回车符
    换行符
    
            中间是响应头部:一些键值对,里面包含一些东西
            回车符 换行符 响应正文(你想返回的html内容)
        '''
        conn.send(b'HTTP/1.1 200 OK
    
    ')
        if url_f in URL_DIC.keys():
            msg = URL_DIC[url_f](url_f) #根据不同命令调用不同函数
        else:
            msg = b'404 not found'
        conn.send(msg)
        conn.close()
    •  牵扯到的知识点:
      • 请求和响应python
        • 请求:浏览器给服务端发消息的过程叫请求(request)
        • 响应:服务端给浏览器回复消息的过程叫响应(response)
        • 请求和响应都必须遵循一个固定的格式
      • 协议:
        • HTTP:默认端口是80
        • HTTPS:默认端口是443
        • 数据库默认端口是3306
      • Python中web框架的分类:
        • a:收发socket消息,按照HTTP协议解析消息的
          b:字符串替换,用来实现动态网页的
          c:业务逻辑

          所以web框架根据abc可以分成三类
        • 1.自己实现a、b、c的有:tornado;
        • 2.自己实现b和c的,使用第三方的a:django
        • 3.自己实现c的,使用第三方的a和b:轻量级的框架flask
  • 相关阅读:
    (转)JQuery中$.ajax()方法参数详解
    __dopostback的用法 . 编辑
    (转)__dopostback的用法 .
    (转)如何区分一个程序员是“老手“还是“新手“?
    jQuery验证框架 .
    location.href的用法
    为用户设置密码
    设置环境变量
    用 xampp 在ubuntu 下配置php 运行环境 lampp
    安装与配置JDK
  • 原文地址:https://www.cnblogs.com/0627zhou/p/9703957.html
Copyright © 2011-2022 走看看