Web框架:WSGI简介、RESTful简介
《Python服务端工程师面试宝典-PegasusWang》学习笔记,第七章:WSGI简介、RESTful简介
313阅读 · 2020-6-5 23:57发布
7.1 WSGI与web框架
什么是WSGI?
- Python Web Server Gateway Interface(pep3333)
- 描述了Web Server(Gunicorn/uWSGI)如何与web框架(Flask/Django)交互,Web框架如何处理请求。(使web应用部署在任意web server上)
WSGI的定义:
# 导入python内置的WSGI server from wsgiref.simple_server import make_server def application(environ, start_response): print(environ) status = '200 OK' headers = [('Content-Type','text/html; charset=utf8')] start_response(status,headers) return [b"<h1>Hello, World!</h1>"] if __name__ == '__main__': httpd = make_server('127.0.0.1', 8000, application) httpd.serve_forever()
常用的Python Web框架对比
- Django:大而全,内置ORM、Admin等组件,第三方插件较多。
- Flask:微框架,插件机制,比较灵活。
- Tornado:异步支持的微框架和异步网络库。
什么是MVC?
- MVC:模型(Model),视图(View),控制器(Controller)。
- Model:负责业务对象和数据库的交互(ORM)。
- View:负责与用户的交互展示。
- Controller:接收请求参数调用模型和视图完成请求。
什么是ORM?
- Object Relational Mapping,对象关系映射。
- 用于实现业务对象与数据表中的字段映射。
- 优势:代码更加面向对象,代码量更少,灵活性高,提升开发效率。
- 缺点:自动化进行关系数据库的映射需要消耗系统性能。
7.2 前后端分离与RESTful
什么是前后端分离?有哪些优点?
- 前后端解耦,接口复用(前端和客户端公用接口),减少开发量。
- 各司其职,前后端同步开发,提升工作效率。定义好接口规范。
- 更利于调试(mock)、测试和运维部署。
什么是RESTful?
- Representational State Transfer(表现层状态转移),由HTTP协议的主要设计者Roy Fielding提出。
- 资源(Resources),表现层(Representation),状态转化(State Transfer)。
- 是一种以资源为中心的web软件架构风格,可以用Ajax和RESTful web服务构建应用。
RESTfule三个名词的解释
- Resources(资源):使用URI指向一个实体。
- Representation(表现层):资源的表现形式,比如图片、HTML文本等。
- State Transfer(状态转化):GET、POST、PUT、DELETE HTTP动词来操作资源,实现资源状态的改变。
RESTful的准则
- 所有事物抽象为资源(resource),资源对应唯一的标识(identifier)。
- 资源通过接口进行操作实现状态转移,操作本身是无状态的。
- 对资源的操作不会改变资源的标识。
什么是RESTful API?
- 通过HTTP GET/POST/PUT/DELETE(获取/新增/更新/删除)资源
- 一般使用JSON格式返回数据。
- 一般的web框架都有相应的插件支持RESTful API。
RESTful API设计规范:
HTTP方法 | URL | 动作 |
---|---|---|
GET | http://[hostname]/api/users | 检索用户列表 |
GET | http://[hostname]/api/users/[user_id] | 检索单个用户 |
POST | http://[hostname]/api/users | 创建新用户 |
PUT | http://[hostname]/api/users/[user_id] | 更新用户信息 |
DELETE | http://[hostname]/api/users/[user_id] | 删除用户 |