base
url.parse():将url字符串转换为url对象
=第二个参数为true, query被转换为了一个对象
url.format():将url对象格式化为url 字符串
url.resolve():用于解析,接受两个参数,拼接
简单用户管理系统剖析:
【1】单独封装操作数据库js文件
//监听请求事件
require(‘./model/index.js‘);
const Student = require(‘./model/student.js‘);
页面重定向:
//重定向到/list页面
res.writeHead(301, {
Location: ‘/list‘
});
form表单的Post请求:
//获取表单数据
req.on(‘data‘, param => {
formData += param;
});
//字符串数据解析成对象
let student = qs.parse(formData);
区分post与put请求:
form表单的实际应用:当提交表单时,向何处发送表单数据。
<form method="post" action="/add">
<input name = "age" value="${student.age}" type="text" class="form-control" placeholder="请输入年龄">
PUT方法是幂等的:连续调用一次或者多次的效果相同(无副作用)。连续调用同一个POST可能会带来额外的影响,比如多次提交订单。
一个
POST
请求通常是通过 HTML 表单发送, 并返回服务器的修改结果. 在这种情况下, content type 是通过在<form>
元素中设置正确的enctype
属性, 或是在<input>
和<button>
元素中设置formenctype
属性来选择的:
application/
x-www-form-urlencoded
: 数据被编码成以‘&‘
分隔的键-值对, 同时以‘=‘
分隔键和值. 非字母或数字的字符会被 percent-encoding: 这也就是为什么这种类型不支持二进制数据(应使用multipart/form-data
代替).multipart/form-data
text/plain
当 POST 请求是通过除 HTML 表单之外的方式发送时, 例如使用
XMLHttpRequest
, 那么请求主体可以是任何类型.按HTTP 1.1规范中描述,POST为了以统一的方法来涵盖以下功能:
- 注释已有的资源
- 在公告板,新闻组,邮件列表或类似的文章组中发布消息;
- 通过注册新增用户;
- 向数据处理程序提供一批数据,例如提交一个表单;
- 通过追加操作,扩展数据库数据.
操作数据库的异步操作
let student = await Student.findOne({ _id: query.id });
await Student.findOneAndDelete({ _id: query.id });
await Student.create(student);