文章目录
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关键字访问,后面带上的变量要包括 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开启即可