zoukankan      html  css  js  c++  java
  • 第9章 py web框架考察点

    py WSGI与web框架常考点

    考点聚焦

    • WSGI, 常见Web框架

    • 常用的py web框架Django/Flask/Tornado对比

    • Web框架的组成(淡化框架,加强基础)

    什么是WSGI?

    • Python Web Server Gateway Interface(PEP 333)

    • 解决Python Web Server乱象mod_python, CGI, FastCGI等

    • 描述Web Server(Gunicorn/uWSGI)如何与web框架交互, Web框架如何处理请求

    def application(environ, start_response)
    
    * application 是WSGI app, 一个可调用对象
    *参数
       *environ: 一个包含WSGI环境信息的字典,由WSGI服务器提供,常见的key有PATH_INFO, QUERY_STRING等
       *start_response: 生成WSGI响应的回调函数,接收两个参数,status 和 headers
    *函数返回响应体的迭代器
    def myapp(environ, start_response):
       status = '200 OK'
       headers = [('Content-Type', 'text/html; charset=utf8')]
    
       start_response(status, headers)
       return [b'<h1>Hello World</hl>']    #可迭代对象,返回字节
    
    if __name__ == '__main__':
       from wsgiref.simple_server import make_server
       httpd = make_server('127.0.0.1', 8888, myapp)
    
    #一个简单的兼容WSGI的web应用
    #导入py内置的WSGI server
    from wsgiref.simple_server import make_server
    
    def applicaiton(environ, start_response):
        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() 
    

    常用的py web框架对比

    ​ Django vs Flask vs Tornado

    ​ Django: 大而全,内置ORM, Admin等组件,第三方插件较多

    ​ Flask:微框架,插件机制,比较灵活

    ​ Tornado: 异步支持的微框架和异步网络库

    什么是MVC?

    ​ MVC: 模型(model) 视图(View) 控制器(Controller)

    ​ Model: 负责业务对象和数据库的交互(ORM)

    ​ View:负责与用户的交互展示

    ​ Controller: 接收请求参数调用模型和视图完成请求

    什么是ORM?

    ​ Object Relational Mapping, 对象关系映射

    ​ 用于实现业务对象和数据表中的字段映射

    • Sqlalchemy Django ORM Peewee

      优势: 代码更加面向对象,代码量更少,灵活性高, 提升开发效率

    Web安全常考点

    常见的web安全问题,原理和防范措施,安全意识

    • SQL注入

    • XSS(跨站脚本攻击, Cross-Site Scripting)

    • CSRF(跨站请求伪造,Cross-site request forgery)

    什么是SQL注入?

    SQL注入与防范

    • 通过构造特殊的输入参数传入Web应用, 导致后端执行恶意SQL

    • 未对输入进行过滤,直接动态拼接SQL产生

    • 可以使用开源工具sqlmap, SQLninja检测

    如何防范SQL注入?

    • web安全一大原则:永远不要相信用户的任何输入

    • 对输入参数做好检查(类型和范围), 过滤和转义特殊字符

    • 不要直接拼接sql, 使用ORM可以大大降低sql注入风险

    • 数据库层:做好权限管理配置,不要明文存储敏感信息

    什么是XSS?

    XSS(Cross Site Scripting) 跨站脚本攻击

    • 恶意用户将代码植入到提供给其它用户使用的页面中,

    • 未经转义的恶意代码输出到其它用户的浏览器被执行

    • 用户浏览页面的时候嵌入页面中的脚本(js)会被执行,攻击用户

    • 主要分为两类: 反射型(非持久型) 存储型(持久型)

    前后端分离与RESTful常见面试题

    考点聚焦

    • 什么是前后端分离? 什么是RESTful?

    • 前后端分离的意义和方式

    • 什么是RESTful

    • 如何设计RESTful API

    什么是前后端分离? 什么是RESTful?

    • 后端只负责提供数据接口,不再渲染模板,前端获取数据并呈现

    • 前后端解耦, 接口复用(前端和客户端公用端口) 减少开发量

    • 前后端同步开发,提升工作效率,定义好接口规范

    • 更有利于调试(mock) 测试和运维部署

    什么是RESTful

    Representational State Transfer

    • 表现层状态转移,由HTTP协议的主要设计者Roy Fielding提出

    • 资源(Resources) 表现层(Representation) 状态转化(State Transfer)

    • 是一种以资源为中心的web软件架构风格,可以用Ajax和RESTful web服务构建应用

    三个名词的解释:

    • Resources(资源): 使用URI指向的一个实体

    • Representation(表现层):资源的表现形式,eg: 图片, HTML文本等

    • State Transfer(状态转化):GET,POST PUT DELETE HTTP动词来操作资源

    ​ 实现资源状态的改变

    RESTful的准则

    设计概念和准则

    • 所有事物抽象为资源(resource) 资源对应唯一的标识(identifier)

    • 资源通过接口进行操作实现状态转移, 操作本身是无状态的

    • 对资源的操作不会改变资源的标识

    什么是RESTful API?

    RESTful风格的API接口

    • 通过HTTP GET/POST/PUT/DELETE 获取/新建/更新/删除 资源

    • 把HTTP动词语义和数据库的增删改查结合到一起

    • 一般使用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] 删除用户

    web框架和web安全思考题

    ​ 什么是HTTPS?

    ​ HTTP和HTTPS的区别?

    ​ 什么是对称加密和非对称加密?

    ​ HTTPS的通信过程是什么样的?能否用Wireshark抓包观察?

  • 相关阅读:
    PacificA协议小结
    raft协议小结
    python爬虫抓取图片
    composer 的使用和常用命令大全
    php批量同步数据
    VMware虚拟机的安装与配置
    国家和地区代码表
    js判断h5页面地址的打开方式(微信、pc、移动端)
    phpexcel图片获取
    python的文件操作及简单的用例
  • 原文地址:https://www.cnblogs.com/xzpin/p/11619253.html
Copyright © 2011-2022 走看看