zoukankan      html  css  js  c++  java
  • beego学习笔记(4):开发文档阅读(6)

    beego的响应流程:

    1.监听的端口接收数据,默认是8080端口。

    2.用户请求到达8080端口后,开始数据处理流程。

    3.初始化CONTEXT对象。判断是否是WEBSOCKET请求,如果是,设置INPUT。同时,判断请求的方法,是否是标准方法(GET、POST、PUT、DELETE、PATCH、OPTIONS、HEAD),以免被恶意访问。

    4.执行beforerouter过滤器。当然,在beego里有开关设置,如果使用该过滤器,则必须打开这个开关。如果在执行过滤器的过程中,responseWriter已经有数据了,则中断这个过滤器的执行。直接调到监控诊断。

    5.开始执行静态文件的处理,拉进行匹配。,查看用户的请求 URL 是否和注册在静态文件处理 StaticDir 中的 prefix 是否匹配。如果匹配的话,采用 http 包中默认的 ServeFile 来处理静态文件。

    6.如果不是静态文件,则初始化session模块(如果开启了session的话)。这里就需要注意,只能在afterstatic的过滤其中使用session,如果是beforerouter过滤器,就会出错

    7.开始执行 AfterStatic 过滤器,如果在执行过滤器过程中,responseWriter 已经有数据输出了,那么就提前结束该请求,直接跳转到监控判断。

    8.执行过过滤器之后,开始从固定的路由规则中查找和请求 URL 相匹配的对象。这个匹配是全匹配规则,即如果用户请求的 URL 是 /hello/world,那么固定规则中 /hello 是不会匹配的,只有完全匹配才算匹配。如果匹配的话就进入逻辑执行,如果不匹配进入下一环节的正则匹配。

    9.正则匹配是进行正则的全匹配,这个正则是按照用户添加 beego 路由顺序来进行匹配的,也就是说,如果你在添加路由的时候你的顺序影响你的匹配。和固定匹配一样,如果匹配的话就进行逻辑执行,如果不匹配进入 Auto 匹配。

    10.如果用户注册了 AutoRouter,那么会通过 controller/method 这样的方式去查找对应的 Controller 和他内置的方法,如果找到就开始执行逻辑,如果找不到就跳转到监控判断。

    11.如果找到 Controller 的话,那么就开始执行逻辑,首先执行 BeforeExec 过滤器,如果在执行过滤器过程中,responseWriter 已经有数据输出了,那么就提前结束该请求,直接跳转到监控判断。

    12.Controller开始执行init函数。这个实际上就是cotroller自己的初始化。不建议在继承的时候,修改这些东西。

    1. 是否开启了 XSRF,开启的话就调用 Controller 的 XsrfToken,然后如果是 POST 请求就调用 CheckXsrfCookie 方法。
    2. 继续执行 Controller 的 Prepare 函数,这个函数一般是预留给用户的,用来做 Controller 里面的一些参数初始化之类的工作。如果在初始化中 responseWriter 有输出,那么就直接进入 Finish 函数逻辑。
    3. 如果没有输出的话,那么根据用户注册的方法执行相应的逻辑,如果用户没有注册,那么就调用 http.Method 对应的方法(Get/Post 等)。执行相应的逻辑,例如数据读取,数据赋值,模板显示之类的,或者直接输出 JSON 或者 XML。
    4. 如果 responseWriter 没有输出,那么就调用 Render 函数进行模板输出。
    5. 执行 Controller 的 Finish 函数,这个函数是预留给用户用来重写的,用于释放一些资源。释放在 Init 中初始化的信息数据。
    6. 执行 AfterExec 过滤器,如果有输出的话就跳转到监控判断逻辑。
    7. 执行 Controller 的 Destructor,用于释放 Init 中初始化的一些数据。
    8. 如果这一路执行下来都没有找到路由,那么会调用 404 显示找不到该页面。
    9. 最后所有的逻辑都汇聚到了监控判断,如果用户开启了监控模块(默认是开启一个 8088 端口用于进程内监控),这样就会把访问的请求链接扔给监控程序去记录当前访问的 QPS,对应的链接访问的执行时间,请求链接等。
  • 相关阅读:
    基本MVVM 和 ICommand用法举例(转)
    WPF C# 命令的运行机制
    628. Maximum Product of Three Numbers
    605. Can Place Flowers
    581. Shortest Unsorted Continuous Subarray
    152. Maximum Product Subarray
    216. Combination Sum III
    448. Find All Numbers Disappeared in an Array
    268. Missing Number
    414. Third Maximum Number
  • 原文地址:https://www.cnblogs.com/aomi/p/9252669.html
Copyright © 2011-2022 走看看