zoukankan      html  css  js  c++  java
  • 【转载】php如何给APP端写接口

    如何写好接口

    1. 目的:清楚明白所写接口的用途
    2. 安全性:做好接口的安全性,防止接口数据泄露,做好必要的参数加密措施
    3. 按需分配: 接受值和返回值要实用,不接受和返回不需要的数据,返回值返回什么应与使用者时时沟通
    4. 规范性:参数命名规范有意义,让使用者一目了然;返回值要包含调用接口状态信息,返回数据格式最好使用JSON
    5. 日志:写接口调用日志,方便查到接口调用错误,实现监控和对接快捷

    接口安全性与规范性参考

    /**
         * 用户登录接口
         * 请求方式:post
         * 接受参数:
         * @param $mobile 用户名         -- 可逆 通过 urlencode(base64_encode()) 加密
         * @param $pwd    加密密码     -- 可逆,同时定义一个加密规则
         * return json
         * {"code":int,"message":string,"data":array}
         * 注意事项:
         *
         */
        public function login() {
            $mobile = isset($_POST['mobile']) ? base64_decode(urldecode(escapeQuotes($_POST['mobile']))) : '';
            $pwd = isset($_POST['pwd']) ? escapeQuotes($_POST['pwd']) : '';
            $totp = isset($_POST['ttoken']) ? escapeQuotes($_POST['ttoken']) : '';
            $commonmodel = self::getModel('common');
            try {
                // 检查参数
                $commonmodel->checkRight($mobile, 'mobile');
                $commonmodel->checkRight($pwd, 'pwd');
                $commonmodel->checkRight($totp, 'ttoken');
                // 验证登录
                $usersmodel = self::getModel('users');
                $res = $usersmodel->userLogin($mobile, $pwd);
            } catch (Exception $e) {
                $res = array(
                    'code' => 10000,
                    'message' => $e->getMessage()
                );
            }
            // 写入接口日志
            $des = "IP:" . getIp() . ";请求用户登录接口;返回:" . $res['message'];
            $commonmodel->logResult('10001', $res['code'], $des);
    
            echo json_encode($res);
        }

    接受的参数,比如用户名和密码都进行了加密处理,密码可以定义一个更安全的加密规则,抓包查看请求参数也不会暴露用户数据。 

    调用接口写好接口日志,记录调用什么接口,返回状态码,接口返回详情等等。。。

    返回值参考

    {
        code:0,
        message: "success",
        data: { key1: value1, key2: value2, ... }
    }
    • code: 返回状态码,1表示成功,非1表示各种不同的错误,10000可以用来表示客户端传参错误
    • message: 描述信息,成功时为”success”,错误时则是错误信息
    • data: 成功时返回的数据,类型为对象或数组

    不同错误就要定义不同的返回状态码,这里举个例子:

    状态码表

    返回值 说明 
    10000 执行异常,一般为客户端传参出错 
    10001 用户不存在 
    10002 密码错误 
    10003 用户状态未激活 
    10004 redis保存值错误 
    10005 令牌(token)错误 
    10006 二维码序列错误 
    10007 验票错误 
    1 验证成功,返回需要信息

    10000可以定义为客户端传入的参数有错,直接抛出异常,区别客户端与服务端之间的错误

    本文转载至:http://blog.csdn.net/xwh670570759/article/details/52130585

  • 相关阅读:
    反射前序------类加载器(ClsaaLoader)的简单讲述
    反射前序------简述类加载的过程
    反射前序------静态语言和动态语言简述以及java语言的特性
    AJAX的原生和JQuery的实现方式
    JQuery
    会话技术------服务器技术session
    冒泡排序
    Git(二)
    Git教程
    Re库使用(正则表达式)
  • 原文地址:https://www.cnblogs.com/xuzhengzong/p/8570858.html
Copyright © 2011-2022 走看看