跟黄同学一起上手node实战

这次解决2个问题

1、static方法引入静态资源
2、post/get传值

创建项目

1、vim app.js
2、var express = require('express');var app = express();app.listen(3000);
3、npm install express / node app.js

项目初始化流程,详细可以看之前的博文,《hello,node.js》

static方法引入静态资源

express静态资源不带目录名称访问才是正确的

比如这样定义静态资源目录,app.use(express.static('public'));,真正访问,应该是通过localhost:3000/test.png才对,加个public成localhost:3000/public/test.png反而找不到文件了;真要那样访问,就定义一个挂载目录就可以,app.use('/public',express.static('public'))

http://www.expressjs.com.cn/starter/static-files.html

post传值

情况一 application/json方式提交的

这种就是整个json串提交到后端的情况

var bodyParser = require('body-parser');
app.use(bodyParser.json());
// 登录
app.post('/user/login', function (req, res) {
    console.log(req.body);
});

对应的小程序端使用如下方式提交

wx.login({
    success: function (res) {
        console.log(res.code);
        // 获取code
        wx.request({
            url: 'http://localhost:3000/user/login',
            data: {
                code: res.code
            },
            method: 'POST',
            header: {
                'content-type': 'application/json'
            }
        });
    }
});

小程序里约定默认是按application/json提交,所以当json时,可以不声明header。

情况二 application/x-www-form-urlencoded 提交

这种方式就是类比web中常见的form表单提交的方式

var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: false }));
// 登录
app.post('/user/login', function (req, res) {
    console.log(req.body);
});

同理,小程序端也需要将Header信息作如下更改

header: {
        'content-type': 'application/x-www-form-urlencoded'
}

运行的结果同为取到code信息,输出到控制台。

get使用req.query取值

get较少用得到,全站接口统一使用post请求就好;与post不同的是,它不需要body-parser库依赖。

下期预告

使用mongoose操作mongoDB,实现小程序微信登录

跟黄同学一起上手node实战_第1张图片
跟黄同学一起上手node实战_第2张图片

你可能感兴趣的:(跟黄同学一起上手node实战)