ThinkPHP 5 知识点和BUG记录(叁)

GET,POST,PUT,DELETE方法

Http请求之GET,POST,PUT,DELETE方法
1、POST /url 创建 向服务器端发送数据
2、DELETE /url/xxx 删除 删除某一个资源
3、PUT /url/xxx 更新 向服务器端发送数据 幂等
4、GET /url/xxx 查看 向服务器发索取数据的请求
POST主要作用在一个集合资源之上的(url),而PUT主要作用在一个具体资源之上的(url/xxx)
通俗一下讲就是,如URL可以在客户端确定,那么可使用PUT,否则用POST

restful api

面向资源 (url)
http动词(post get put delete)描述操作
json数据格式

HTTP状态码

201创建成功
202更新成功
400无效访问
403禁止访问
404资源缺失
500内部错误
HttpStatusCode

API数据结构格式

status 业务状态码
message 提示信息
data 数据层

ThinkPHP5使用restful api

Route::get
Route::put
Route::post
Route::delete
Route::resource (包含以上四种)

页面渲染机制

    /**
     * Render an exception into an HTTP response.
     *
     * @param  \Exception $e
     * @return Response
     */
    public function render(Exception $e)
    {
        if ($this->render && $this->render instanceof \Closure) {
            $result = call_user_func_array($this->render, [$e]);
            if ($result) {
                return $result;
            }
        }

        if ($e instanceof HttpException) {
            return $this->renderHttpException($e);
        } else {
            return $this->convertExceptionToResponse($e);
        }
    }

抛出异常Exception和\Exception区别

没有定义命名空间的情况下 , Exception和\Exception 均可正常执行抛出异常;
定义命名空间的情况 , Exception 会在定义的命名空间下找对应的异常类 , 如果没有定义异常类 , 则会报错 ;
定义命名空间的情况 , \Exception 会按照php默认的异常类执行抛出异常 ;
建议: 抛出异常 使用 \Exception !

继承Hander重构render

对config.php进行修改

// 异常处理handle类 留空使用 \think\exception\Handle
'exception_handle'       => '\app\common\lib\exception\ApiHanderException',

APP-API数据安全

接口请求地址及参数爆露
重要接口返回数据明文暴露
APP登录态请求数据安全性
代码层的数据完全

加密处理
md5 aes rsa

安全处理
基本参数放入header
每次http请求都携带sign
sign唯一性保证
请求参数,返回数据按安全性适当加密
access_token

APP请求基础参数

sign version app_type did model

维护安全性解决方案

aes算法的运用
sign算法的生成

aes 算法
php7版本

<?php
namespace app\common\lib;

/**
 * aes 加密 解密类库
 * @by singwa
 * Class Aes
 * @package app\common\lib
 */
class Aes {

    /**
     * [encrypt aes加密]
     * @param    [type]                   $input [要加密的数据]
     * @param    [type]                   $key   [加密key]
     * @return   [type]                          [加密后的数据]
     */
    public static function encrypt($input)
    {
        // 配置文件app.php中定义aeskey
        $key = config('app.aeskey');
        $data = openssl_encrypt($input, 'AES-128-ECB', $key, OPENSSL_RAW_DATA);
        $data = base64_encode($data);
        return $data;
    }
    /**
     * [decrypt aes解密]
     * @param    [type]                   $sStr [要解密的数据]
     * @param    [type]                   $sKey [加密key]
     * @return   [type]                         [解密后的数据]
     */
    public static function decrypt($sStr)
    {
        $sKey = config('app.aeskey');
        $decrypted = openssl_decrypt(base64_decode($sStr), 'AES-128-ECB', $sKey, OPENSSL_RAW_DATA);
        return $decrypted;
    }

}

静态方法

1、一般静态属性用于保存类的公有数据

2、静态方法内部只能访问静态属性,包括本类和父类的

3、静态成员不需要实例化对象就可以访问

4、在本类内部访问静态属性用self或static关键字访问,后面带上的变量要包括 : s e l f : : ,比如: self:: a或者static::$a

5、访问父类静态属性使用parent,如:parent::$name

6、在类外部访问静态变量或者方法时使用类名直接访问,无需实例化。如:Me::$pan和Me::abc()

APP与服务端时间一致性处理

获取客户端时间戳
time.php

class Time extends Controller
{
    public function index() {
        return show(1, 'success', time());
    }
}

API接口文档编写

接口文档
API入参,出参格式
好处
有利于服务端工程师接手项目
有利于客户端工程师熟悉接口
内容
API接口地址
请求方式
入参格式
出参格式
http code

路由配置

// 是否开启路由
'url_route_on'           => true,

ThinkPHP自增或自减一个字段的值

在这里插入图片描述

APP版本升级业务

开设API接口
端APP接口做相关识别判定

ThinkPHP写入日志

tp5的日志处理
记录PHP错误日志
对于PHP开发人员来说,一旦某个产品投入使用,那么第一件事就是应该将display_errors选项关闭,
以免因为这些错误所透露的路径、数据库连接、数据表等信息而遭到黑客攻击。某个产品投入使用后,
难免会有错误信息,那么如何记录这些对开发人员非常有用的信息呢?将PHP的log_errors开启即可

SHA1与MD5差异

SHA1算法原理

单例模式和工厂模式

单例模式和工厂模式
单例模式
构造方法私有化和单例模式

猜你喜欢

转载自blog.csdn.net/weixin_43960884/article/details/88917577