20201109-第十三讲-Flask-session&上下文管理

3-Flask上下文

Flask项目中有二个上下文,一个是应用文上下文(app),另外一个是请求上下文(request)。请求上下文request和应用文上下文current_app都是一个全局变量。所有请求都共享的。Flask有特殊的机制可以保证每次请求的数据是隔离的,及A请求所产生的数据不会影响到B请求。所有可以直接导入request对象,也不会被一些数据影响了。并且不需要在每个函数中使用request的时候传入request对象。这二个上下文具体的实现方式和原理可以没有不要详细了解。

request:请求上下文的对象。这个对象一般用来保存一些请求的变量。比如method 、args 、 form等。

session:请求上下文的对象。这个对象一般用来保存一些会话信息。

current_app:返回当前的app。

g:应用上下文的对象。处理请求时用作临时存储的对象。

常用的钩子函数

。before_first_request:处理第一次请求之前执行。

1 @app.before_first_request

2       def first_request():

3              print 'first time request'

。before_request:在每次请求之前执行,通常可以用这个装饰器来给视图函数增加一些变量。

1 @app.before_request

2      def before_request():

3           if not hasattr(g,'user'):

4                  setattr(g,'user','xxxx')

。teardown_appcontext:不管是否有异常,注册的函数都会在每次请求之后执行。

1 @app.teardown_appcontext

2 def teardown(response):

3      print("teardown 被执行")

4      return respons

。context_processor:上下文处理器。返回的字典中的键可以在模板上下文中使用。

1 @app.context_processor

2 def context_processor():

3        return {'current_user':'xxx'}

。errorhandkler:errorhandler接收状态码,可以自定义返回这种状态码的响应的处理方法。

1 @app.errorhandler(404)

2       def page_not_found(error):

3            return 'This page does not exist',404

4-Restful API规范

restful api 是用于在前端与后台进行通信的一套规范。使用这个规范可以让前后端开发变得更加轻松。以下将讨论这套规范的一些设计细节

协议:采用http或https协议。

数据传输格式:数据之间传输的格式应该都使用json,而不使用xml。

url链接:url链接中,不能有动词,只能有名词。并且对于一些名词,如果出现复数,那么应该在后面加s。

HTTP请求的方法

GET:从服务器上获取资源。

POST:在服务器上新创建一个资源。

PUT:在服务器上更新资源。(客户端提供所有改变后的数据)

PATCH:在服务器上更新资源。(客户端只提供需要改变的属性)

DELETE:从服务器上删除资源。

示例

1.GET/users/:获取所有用户

2.POST/users/:新建一个用户

3.GET/user/id/:根据id获取一个用户

4.PUT/user/id/:更新某个id的用户的信息(需要提供用户所有信息)

5.PATCH/user/id/:更新某个id 的用户信息(只需要提供需要改变的信息)

6.DELETE/user/id/:删除一个用户。

状态码

状态码            原生描述                                    描述

200                  OK                                            服务器成功响应客户端的请求。 

400                  INVALID REQUEST                 用户发出的请求有错误,服务器没有进行                                                                            新建或修改数据的操作

401                  Unauthorized                             用户没有权限访问这个请求

403                  Forbidden                                  因为某些原因禁止访问这个请求

404                   NOT FOUND                             用户发送的请求的url不存在

406                   NOT Acceptable                       用户请求不被服务器接收(如服务器期                                                                               望客户端发送某个字段,但没有发送)

500                   Internal server error                  服务器内部错误,比如出现了bug

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。