文章目录
Web开发涉及的点
个人认为, 技术的出现皆因实际业务的驱使. 如果不是Web应用承接的功能越来越丰富, 越来越复杂, Web框架也不会出现.
先看看目前开发一个Web应用, 没有Web框架, 都需要做哪些重复工作.
1.请求request
进入一个Web网站, 首先会发HTTP请求, 所以后端首先需要解析请求头, 请求体.如请求头告诉后端可以接受什么格式的返回信息等.
另外还需要拆开请求参数或者请求体的内容, 做进一步操作处理使用.
所以, 对于请求本身的解析, 是一个重复性工作, 如果不适用框架, 就需要自己写了.
2. 响应Response
同请求一样, 对于每一个请求都应有一个响应返回, 响应头中可能包含修改浏览器状态的信息, 如cookie等, 而封装请求头和请求体同样是重复性工作.
3. 表单输入和验证
不过Javascript的诞生正是为了在前端验证字段, 不过后端依旧需要表单字段验证的功能.
4.操作数据库/SQL注入/ORM
可以使用SQL语句操作数据库, 不过因为会有SQL注入的风险, 基本Web框架都有自己的ORM, 算是一种减少SQL注入可能的方式.
SQL注入方式
5.安全(XSS, CSRF等)
XSS: 转义所有用户输入
CSRF: CSRF-Token
还有其他熟悉和不熟悉的Web安全漏洞, 都将成为Web框架设计时考虑的点.
Web应用安全组织: OWASP
6.发送邮件通知
这点在过去手机短信API未出现时较常用, 现在可能是手机短信通知为主, 邮件为辅了.不过框架一般也包含此内容.
7. 模板渲染语言(Jinja2或类Jinja2)
对于前后端不分离的项目, Web框架还需要具有输入html网页的能力, 而且还需要时动态生成页面, 所以就会需要模板语言在事先先好的模板页面中用某种语法嵌入可变量.
8. 后台管理/权限管理/用户认证等
总结
以上几点, 就是Web框架主要做的一些事, 所以, 如果没有Web框架, 开发任何一个Web应用, 都需要自己把上面的内容实现一遍, Web框架的出现就是为了可以直接投入业务的开发中, 而不用被以上重复繁琐的事情阻碍.
任何一个Web框架, 要做的事无出其右, 即使不懂Java, 但Java的SSM类似. 即使不懂Ruby, 但Ruby的ruby on rails类似. 即使不懂Go, Go的Beego类似.