服务端接口开发
- 工具准备(编码工具-sublime;运行环境-phpStudy;调试工具-postman;...)
- 基础知识:网络请求、mysql、thinkphp
- 各接口开发实操:注册登陆
接口文档
正式接口代码编写前,需要输出接口文档,以便对照和检查。


代码思路:
- 首先判断参数是否齐全(其中face_url不用判断,直接在前端全局变量中用户授权用户信息中调用)
- 校验密码是否一致(手机号长度和合法性校验,理论上要做的,但是在接口文档没写出来,所以暂时不做)
- 校验手机密码是否已注册
- 全部校验成功,则将输入信息增加到数据库中。增加成功,则提示注册成功,并返回需求数据;登录类似,校验增加一项密码和注册密码是否一致。
php基本语法:
$_POST['text']
代表输入的数据value
$table=M(‘table’)
代表实例化数据表table,
特别注意:
$this->ajaxReturn()
这个函数的意义是将括号内的数据返回到客户端,它和打印输出dump/var_dump
不同,它只会执行一个,所以要特别注意其出现的逻辑,避免和前端JS中console.log
作用混淆!
补充几个sublime中提高代码编写的方法:
- 光标移动至行末尾---> End键
- 光标在行中间,但是先直接换到下一行--> ctrl+enter
- 光标向右移动由方向键改为enter键-->方法
- 宏录制方法
- 搞懂正则表达式就好弄了,直接在key bindings上操作自己想要的效果;
注册端口实现
<?php
namespace Home\Controller;
use Think\Controller;
class UserController extends BaseController {
/**
* 注册函数
* @return [type] [description]
*/
public function enroll()
{
//首先校验参数不足
if (!$_POST['username']) {
# code...
$return_data=array();
$return_data['error_code']=1;
$return_data['msg']='参数不足:username';
$this->ajaxReturn($return_data);
}
if (!$_POST['phonenum']) {
# code...
$return_data=array();
$return_data['error_code']=1;
$return_data['msg']='参数不足:phonenum';
$this->ajaxReturn($return_data);
}
if (!$_POST['password']) {
# code...
$return_data=array();
$return_data['error_code']=1;
$return_data['msg']='参数不足:password';
$this->ajaxReturn($return_data);
}
if (!$_POST['passwordagain']){
$return_data=array();
$return_data['error_code']=1;
$return_data['msg']='参数不足:passwordagain';
$this->ajaxReturn($return_data);
# code...
}
if ($_POST['password']!=$_POST['passwordagain']) {
$return_data=array();
$return_data['error_code']=2;
$return_data['msg']='两次密码输入不一致';
$this->ajaxReturn($return_data);
# code...
}
//校验手机号码是否已被注册,需要访问数据库,所以先实例化需要的数据表
$user=M('user');
//构造查询条件
$where=array();
$where['phonenum']=$_POST['phonenum'];
$result_find=$user->where($where)->find();//find函数返回:满足查询条件的一行记录
// $this->ajaxReturn($result_find);
//判断查询是否成功(是否有返回数据),即确认是否有注册
//有数据,则提示已被注册
if ($result_find) {
$return_data=array();
$return_data['error_code']=3;
$return_data['msg']='手机号已被注册';
$this->ajaxReturn($return_data);
# code...
}
// 没有数据,则执行注册,将输入数据增加到数据库中
else{
$Data=array();
$Data['username']=$_POST['username'];
$Data['phonenum']=$_POST['phonenum'];
$Data['password']=md5($_POST['password']);
$Data['face_url']=$_POST['face_url'];
$result_add=$user->add($Data);//add函数返回:这一行记录的id,表示第几个成功添加
// $this->ajaxReturn($result_add);
// dump($result);
//成功添加后,返回需求的数据
if ($result_add) {
$Data=array();
$Data['error_code']=0;
$Data['msg']='注册成功';
$Data['Data']['username']=$_POST['username'];
$Data['Data']['phonenum']=$_POST['phonenum'];
$Data['Data']['face_url']=$_POST['face_url'];
$Data['Data']['user_id']=$result_add;
$this->ajaxReturn($Data);
# code...
}
else{
$return_data=array();
$return_data['error_code']=4;
$return_data['msg']='注册失败';
$this->ajaxReturn($return_data);
}
}}
}
登陆端口实现
<?php
namespace Home\Controller;
use Think\Controller;
class UserController extends BaseController {
/**
* 登录函数
* @return [type] [description]
*/
public function login(){
// 校验参数
if (!$_POST['phonenum']) {
# code...
$return_data=array();
$return_data['error_code']=1;
$return_data['msg']='参数不足:phonenum';
$this->ajaxReturn($return_data);
}
if (!$_POST['password']) {
# code...
$return_data=array();
$return_data['error_code']=1;
$return_data['msg']='参数不足:password';
$this->ajaxReturn($return_data);
}
//校验手机号是否有注册
//实例化数据表
$user=M('user');
//构造查询条件
$where=array();
$where['phonenum']=$_POST['phonenum'];
//查询数据
$result_find=$user->where($where)->find();
// 判断数据是否存在
if (!$result_find) {
//不存在,提示注册
$return_data=array();
$return_data['error_code']=2;
$return_data['msg']='请先注册';
$this->ajaxReturn($return_data);
# code...
}
else{
//如果存在,接着判断密码是否正确
if ($result_find['password']!=md5($_POST['password'])) {
//密码不一致,则提示密码错误
$return_data=array();
$return_data['error_code']=3;
$return_data['msg']='密码错误';
$this->ajaxReturn($return_data);
# code...
}
else{
//登录成功,返回数据
$return_data=array();
$return_data['error_code']=0;
$return_data['msg']='登录成功';
$return_data['Data']['username']=$result_find['username'];
$return_data['Data']['phonenum']=$result_find['phonenum'];
$return_data['Data']['face_url']=$result_find['face_url'];
$return_data['Data']['user_id']=$result_find['id'];
$this->ajaxReturn($return_data);
}
} }
}
非注册登陆(树洞匿名)实现
想要实现:只在第一次授权时获取用户信息,用户不需要注册和登陆,直接接收随机分配的头像和名字。
思路:
除了数据表user外,需要再加一个数据表showUser。里面字段有:
- id
- user_id 等于数据表user中的id,是个外键;
- showname 展示的名字
- showface_url 展示的头像
当授权成功时,调用bindgetsuerinfo,调用成功则执行回调函数wx.request(注册并返回id,用来在showUser数据表中匹配随机名字和头像)
本地服务器端口测试
使用postman发送请求,测试接口是否正常。这个测试动作是和代码编写同步进行的,一个功能完成就要测试一次,避免全部代码写完后出错难以排查原因。
部署云服务器
前期工具准备时,已完成了账号注册和实名验证以及创建应用。接下来:
- 代码管理(上传代码包--压缩包点开即是thinkphp框架目录)
- 新建数据库
- postman测试更换云服务器域名后接口是否正常
代码版本控制
便于在调试中及时更新代码,保持线上线下代码一致。
- 下载安装TortoiseSVN
- 在phpstudy的安装目录WWW下右键点击SVN checkout,在url地址中填入服务器中SVN仓库地址,点击OK,填写云服务的账号、安全密码。
- sublime打开新生成的代码文件夹,进行更改。
- 在代码文件夹右键选择下载更新或上传发表
以上全部测试ok后,输出接口文档给到前端,注意其中本地服务器域名需要更换为云服务器域名。
特别提醒,代码打包上传时如果目录结构没有做好,就会出现这个情况!!

第一种打包才对

网友评论