Open Cbinbin opened 7 years ago
在此之前写过一个很简单的API,用了post和get各一次就完了.通过看别人写的代码里用multer来对文件进行上传,我就从multer开始了我的第二个API; 知道如何上传文件后,写请求方式,里面再加上对mongodb数据的查改删存来实现一些小功能,这时才想到文件只能上传添加,不知该如何删掉,紧接着找了个fs删了文件; 最后在一些请求中加token生成和验证,这样偿视API差不多完成了.不过还差测试和完善.
multer
//diskStorage为multer的磁盘存储引擎 var storage = multer.diskStorage({ destination: (req, file, cb) => { cb(null, 'path/to') }, //文件存储的路径 filename: (req, file, cb) => { cb(null, file.originalname ) } //文件存储的文件名 }) var upload = multer({ storage: storage }).single('A key')
//当用到 post 时执行 upload router.post('/router', (req, res) => { upload(req, res, (err) => { if(err) { //发送错误信息 return } //上传文件后其他操作 }) })
fs
//fs文件操作系统 fs.unlink(path,[callback]) //删除路径中的文件
.find() //符合条件的所有文档(document) .findOne() //符合条件的单个文档(如有多个,默认首个) .findById() //符合ID的单个文档 .save() //保存文档(单个),如果不是单个会报错'xxx not a function' .remove() //删除文档(可多个)
'model'.findOne({ 域: 值 }, { 域: 0(or 1), 域: 1(or 0)}, (err, ooo) => { if(err) return //报错 if(!ooo) return //not found ,其实这儿也可包含err console.log(ooo) })
jsonwebtoken 以下是本人看官方文档和结合自己的想法,如有不对,还望指出. JWT签名
jsonwebtoken
jwt.sign(payload, secretOrPrivateKey, options, [callback])
可放你自己想用的属性, 比如你做注册登录API的admin和password(可包含生成的id),方便你后面验证时用到. eg: {admin:oooo, password:xxxx} secretOrPrivateKey: 字符串给密钥命名,自定义 options: 这里可选或多选的,包含多个固定的属性,有 algorithm (加密的算法), expiresIn (token有效期), notBefore (有效期延后生效), audience (用户[自定义]), issuer (发行者[自定义]), jwtid (token标识[自定义]), subject (主题[自定义]), noTimestamp (如为true,解密后将不显示签发时间(iat)), header (JWT头部,一般为 {"typ": "JWT", "alg": "HS256"} ) callback: 函数调用
可放你自己想用的属性, 比如你做注册登录API的admin和password(可包含生成的id),方便你后面验证时用到. eg: {admin:oooo, password:xxxx}
字符串给密钥命名,自定义
这里可选或多选的,包含多个固定的属性,有 algorithm (加密的算法), expiresIn (token有效期), notBefore (有效期延后生效), audience (用户[自定义]), issuer (发行者[自定义]), jwtid (token标识[自定义]), subject (主题[自定义]), noTimestamp (如为true,解密后将不显示签发时间(iat)), header (JWT头部,一般为 {"typ": "JWT", "alg": "HS256"} )
函数调用
jwt.verify(token, secretOrPrivateKey, options, [callback])
open your terminal
$ wget -O- https://toolbelt.heroku.com/install-ubuntu.sh | sh $ heroku login $ git clone https://github.com/你的github名/项目名.git $ cd 项目名 $ heroku create $ git push heroku master $ heroku ps:scale web=1 $ heroku open 执行完以上语句后,若弹出新窗口显示出你项目的东西,你已经成功的将项目以app的形式放在远程上,可通过heroku'随机生成的名字'+.herokuapp.com当成域名访问. mongodb mlab mlab是mongodb的一个远程库,使用方法和mongodb一样,但需要到官网注册个账号,再新建一个库,(!)还要新建 库的使用账号和密码(不是注册的账号密码),完成以上步骤后才能使用.
$ wget -O- https://toolbelt.heroku.com/install-ubuntu.sh | sh
$ heroku login
$ git clone https://github.com/你的github名/项目名.git
$ cd 项目名
$ heroku create
$ git push heroku master
$ heroku ps:scale web=1
$ heroku open
总结得比较粗略哦。
偿视API主要为上传文件,对数据的查找筛选,JWT.
在此之前写过一个很简单的API,用了post和get各一次就完了.通过看别人写的代码里用multer来对文件进行上传,我就从multer开始了我的第二个API;
知道如何上传文件后,写请求方式,里面再加上对mongodb数据的查改删存来实现一些小功能,这时才想到文件只能上传添加,不知该如何删掉,紧接着找了个fs删了文件;
最后在一些请求中加token生成和验证,这样偿视API差不多完成了.不过还差测试和完善.
上传
上传部分用到了两个中间件:multer 和 fs ,因为不清楚multer怎么对文件进行删除操作,所以用fs代替.
上传和删除从官网看到,需要用到的代码有下面这些:
筛选
由于数据库为mongodb,所以对数据库操作的语句还是和mongodb用到的语句是差不多的.如
mongodb中: > db.collection.find()
XX.js中: 'model'.find()
操作语句经常用到的有以下这些:
接着拿 .findOne() 作较为详细的说明:
下面第一个{}内是筛选条件,最多一域一值,也可空着;
第二个{}如果没用到是可以去掉的,这儿的{}对选出文档的域显示,0表示不显示,1表示显示;可多个域;
最后function做判断.
JWT
payload:
JWT验证
heroku
heroku node.js安装
安装heroku之前需已经安装了node npm git
选择 Download the Heroku CLI Debian/Ubuntu
如果用的是其他语言或其他系统,点这个heroku了解.
open your terminal