小程序开发文档

  • 时间:
  • 浏览:
  • 来源:互联网

小程序开发文档

  • 关于POST/DELETE请求说明
      • 关于delete请求说明
  • 登录-注册-退出
    • 注册(POST)
    • 登录(POST)
    • 退出(delete)
  • 获取资源验证

关于POST/DELETE请求说明

为防止跨站提交数据,在POST提交数据时,要验证客服端随机发送的中字符串字符串
在小程序中可以在onLoad或者onShow中发起get请求获得随机字符串,然后保存在内存中。
1.先在页面全局设置变量

// 在全局的data中
data: {
	sessionid:null, // 验证登录状态
    Cookie:null, // 验证POST请求和登录请求
    csrfmiddlewaretoken:null,//验证POST请求是否是跨站请求
  },

2.在onLoad或者在onShow发送get请求

onShow() {
	var data = this
    wx.request({
      url:"访问地址",
      method: 'get',
      header: {
        "Content-Type": "application/x-www-form-urlencoded"
      },
      success: function (res) {
       // 访问正常
        if(res.statusCode==200){
          if(res.cookies.length != 0){
          // 保存cookie和随机字符串
              data.setData({
                "Cookie":res.cookies[0].split(";")[0],
                "csrfmiddlewaretoken":res.data.csrfmiddlewaretoken
            })
          }    
        }
      }
  })
}

3.给需要发送请求的标签绑定点击事件

  myload:function(){
    var data = this;
    wx.request({
      url: '',
      method: 'post',
        header: {
          "Content-Type": "application/x-www-form-urlencoded",
          'Cookie': this.data.Cookie
        },
        data:{
           csrfmiddlewaretoken:this.data.csrfmiddlewaretoken,
          //其他数据
        },
        success: function (res) {
        // 成功逻辑
          console.log(res);
          }
    })      
  }

关于delete请求说明

delete请求验证需要在请求头添加"X-CSRFToken":this.data.csrfmiddlewaretokendata中则不需要添加csrfmiddlewaretoken:this.data.csrfmiddlewaretoken,但是同样也要在delete请求前,先进行get请求,获得随机字符串,放在请求头"X-CSRFToken":this.data.csrfmiddlewaretoken中
在进行delete请求前,先进行get请求

wx.request({
      url:"访问地址",
      method: 'get',
      header: {
        "Content-Type": "application/x-www-form-urlencoded"
      },
      success: function (res) {
       // 访问正常
        if(res.statusCode==200){
          if(res.cookies.length != 0){
          // 保存cookie和随机字符串
              data.setData({
                "Cookie":res.cookies[0].split(";")[0],
                "csrfmiddlewaretoken":res.data.csrfmiddlewaretoken
            })
          }    
        }
      }
  })

再进行delete请求

 wx.request({ 
      url: '路径',
      method: 'delete',
        header: {
          "Content-Type": "application/x-www-form-urlencoded",
          "X-CSRFToken":this.data.csrfmiddlewaretoken,
          'Cookie':this.data.sessionid + ";" + this.data.Cookie
        },
        data:{
          'isQuit':1
        },
        success: function (res) {
          console.log(res);
          }
    });
    

登录-注册-退出

注册(POST)

注册请求链接:
	https:/xxx.xxx/register/
验证码链接:
	https://xxx.xxx//ver_code/

提交注册请求携带数据data{“属性”:“值”}

属性类型说明
csrfmiddlewaretoken获取的随机字符串string
username2018的数字string学号
nickname3-12位string昵称
emailstring邮箱
password6-12位string密码
confirm_password6-12位string确认密码
code6位数字邮箱验证码string验证码

返回数据JSON

属性属性
code100msg注册成功
code200msg验证码不能为空
code200msg验证码失效
code200msg验证码错误

获取邮箱验证码携带数据data{“属性”:“值”}

属性类型说明
csrfmiddlewaretoken获取的随机字符串string
username12位数字学号string学号
emailstring邮箱

返回JSON数据

属性属性
code1msg发送验证码成功
code-1msg信息未填写完
code-1msg邮箱已注册
code-1msg发送验证码过于频繁
code-1msg发送验证码失败

注册提交的也是POST同样也要在onLoad或者onShow获取随机字符串
1.在onLoad或者onShow获取随机字符串

onShow() {
	var data = this
    wx.request({
      url:"https://xxx.xxx/register/",
      method: 'get',
      header: {
        "Content-Type": "application/x-www-form-urlencoded"
      },
      success: function (res) {
       // 访问正常
        if(res.statusCode==200){
          if(res.cookies.length != 0){
          // 保存cookie和随机字符串
              data.setData({
                "Cookie":res.cookies[0].split(";")[0],
                "csrfmiddlewaretoken":res.data.csrfmiddlewaretoken
            })
          }    
        }
      }
  })
}

2.获取邮箱验证码也是POST请求,要携带随机字符串

 onClickCheckCode:function(){
    var data = this
    wx.request({
      url: 'https://xxx.xxx/ver_code/',
      header: {
        "Content-Type": "application/x-www-form-urlencoded",
        'Cookie': this.data.Cookie
      },
      method:'post',
      data:{
        "username":this.data.username,
        'email':this.data.email,
        'csrfmiddlewaretoken': this.data.csrfmiddlewaretoken
      },
      success:function(res){
        if(res.data.code==1 && data.data.nums==60){
          // 倒计时计数器
          wx.showToast({ title: res.data.msg, icon: 'none' });
          var inter = setInterval(function() {
            data.setData({
              tips: data.data.nums + 's',
              nums: data.data.nums - 1
            });
            if (data.data.nums < 0) {
              clearInterval(inter);
              data.codeInput();
            }
          }.bind(data), 500);
          
        }else{
          // 短信发送失败
          wx.showToast({title: res.data.msg,icon: 'none'});
          console.log(res);
        }
      },
      fail:function(res){
        console.log(res);
      }
    })
  },
  codeInput () {
    this.setData({
      tips: "获取验证码",
      nums:60
    })
  },

3.注册POST请求,携带随机字符串

wx.request({
      url: 'https://xxx.xxx/register/',
      method: 'POST',
      header: {
        "Content-Type": "application/x-www-form-urlencoded",
        'Cookie': this.data.Cookie
      },
      data: {
        'username': username,
        'nickname': nickname,
        'email':email,
        'password': password,
        'confirm_password':confirm_password,
        'code': code,
        'csrfmiddlewaretoken': this.data.csrfmiddlewaretoken
      },
      success: function (res) {
        //注册成功后的逻辑
      },
    })

登录(POST)

登陆成功后将获得sessionid和Cookie,两个联用做登录状态保持

请求链接:
	https://xxx.xxx/login/

POST请求数据data{“属性”:“值”}

属性类型说明
csrfmiddlewaretoken获取的随机字符串string
username12位数字学号string学号
password12位密码string密码

返回JSON数据

属性属性属性
code100msg登录成功nickname昵称
code200msg用户名或密码错误

1.在onLoad或者onShow向请求链接发起get请求获取随机字符串

onLoad:function(){
	var data = this
    wx.request({
      url:"https://xxx.xxx/login/",
      method: 'get',
      header: {
        "Content-Type": "application/x-www-form-urlencoded"
      },
      success: function (res) {
        if(res.statusCode==200){
          if(res.cookies.length != 0){
              data.setData({
                "Cookie":res.cookies[0].split(";")[0],
                "csrfmiddlewaretoken":res.data.csrfmiddlewaretoken
            })
          }  
        }
      }
  })
}

2.向链接发POST请求提交数据

 onSubmit:function(){
    var data = this;
    wx.request({
      url:"https://xxx.xxx/login/",
      method: 'POST',
      header: {
        "Content-Type": "application/x-www-form-urlencoded",
        'Cookie': this.data.Cookie
      },
      data: {
        username:username,
        password:password,
        'csrfmiddlewaretoken': this.data.csrfmiddlewaretoken
      },
      success: function (res){
        //登录成功逻辑
        data.setData({
          "Cookie":res.cookies[0].split(";")[0],
          "sessionid":res.cookies[1].split(";")[0],
      })
      }
    })
  },

退出(delete)

请求链接:
	https://xxx.xxx/login/

请求参数

属性类型说明
isQuit1int退出登录

返回JSON

属性属性
code100msg退出登录成功
code200msg退出登录失败
logout:function(){
    wx.request({
      url: 'https://xxx.xxx/login/',
      method: 'delete',
        header: {
          "Content-Type": "application/x-www-form-urlencoded",
          "X-CSRFToken":this.data.csrfmiddlewaretoken,
          'Cookie':this.data.sessionid + ";" + this.data.Cookie
        },
        data:{
          'isQuit':1
        },
        success: function (res) {
          console.log(res);
          }
    })
  }

获取资源验证

本文链接http://www.dzjqx.cn/news/show-617390.html