zoukankan      html  css  js  c++  java
  • WSGI协议

    WSGI协议:(Web Server Gateway Interface,Web 服务器网关接口)
        WSGI是Python语言中所定义的Web服务器和Web应用程序之间或框架之间的通用接口标准。
        WSGI就是一座桥梁,桥梁的一端称为服务端或网关端,另一端称为应用端或者框架端,WSGI的作用就是在协议之间进行转化。WSGI将Web组件分成了三类:Web 服务器(WSGI Server)、Web中间件(WSGI Middleware)与Web应用程序(WSGI Application)。
        Web Server接收HTTP请求,封装一系列环境变量,按照WSGI接口标准调用注册的WSGI Application,最后将响应返回给客户端。
    Web应用的本质:
            1)、浏览器发送HTTP请求  
            2)、服务器接收到请求,生成HTML文档
            3)、服务器把HTML文档作为HTTP响应的Body发送给浏览器
            4)、浏览器收到HTTP响应,从HTTP Body取出HTML文档进行显示
     
            { 接受HTTP请求、解析HTTP请求、发送HTTP响应都是重复的苦力活,如果我们自己来写这些底层代码,还没开始写HTML,先要花半把个月研读HTTP规范。所以底层的代码应该由专门的服务器软件实现,我们用python专注于生成HTML文档。}
            因为我们不想要接触TCP连接、HTTP原始请求和响应格式。所以需要一个统一的接口,专心用python编写Web业务。
            这个接口就是 WSGI:(Web 服务器网关接口)。
     
    WSGI接口
        WSGI接口定义非常简单,它只要求Web开发者实现一个函数,就可以响应HTTP请求。
    def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html;charset=utf-8')]) # charset=utf-8:中文编码
    return 'Hello World!'
    上面的application()函数就是符合WSGI标准的一个HTTP处理函数,它接收两个参数:
    • environ:一个包含所有HTTP请求信息的dict对象,服务器给框架传数据
    • start_response:一个发送HTTP响应的函数,框架给服务器传响应头相关信息
    • start_response('200 OK', [('Content-Type', 'text/html')]): 表示响应Body的内容形式 
    • start_response()函数接收两个参数:一个是HTTP响应码,一个是一组列表list表示的HTTP Header,每个Header用一个包含两个str的tuple表示。(响应头里的参数可以自己填写添加)
    从environ这个dict对象拿到HTTP请求信息,然后构造HTML,通过start_response()发送Header,最后返回Body(HTTP响应格式)。
     
    浏览器通过WSGI请求动态资源的过程
        1.httpweb发送请求动态资源给服务器
        2.webWSGI服务器收到请求后通过调用一个属性给(应用程序框架)
        3.WSGIweb(应用程序框架)通过引用调用服务器的方法,设置返回的状态和头信息
        4.web调用后返回,此时服务器保存了刚刚设置的信息
        5.body(应用程序框架)查询数据库,生成动态页面的信息
        6.bodyweb把生成的信息返回给服务器
        7.web服务器把数据返回给浏览器
  • 相关阅读:
    Matlab .asv是什么文件
    matlab中常数下的点是什么意思
    Matlab 根号的输入
    Paired t-test
    气血
    getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()
    ViewPager实现滑动翻页效果
    ViewPager结合Fragment进行无限滑动
    ViewPager结合view无限滑动
    Android的ToolBar
  • 原文地址:https://www.cnblogs.com/qingchang/p/9095585.html
Copyright © 2011-2022 走看看