2023年6月20日13:50:56
1,因为前后端对http的认识差异比较大,而且很多前端开发有些是培训速成或者其他行业转过来的,所以基础知识差异大,你要求他们具备和后端一样的基础知识水平,不太可能
2,http协议支持的方法 GET方法
:获取资源,POST方法
:传输实体主题,PUT方法
:传输文件,HEAD方法
:获取报文首部,DELETE方法
:删除文件,OPTIONS方法
:询问支持的方法
http的头部code
的200系列,300系列,400系列,500系列,如果你完全按照http协议标准写后端接口无可厚非,但是为了避免相关问题,比如系统错误你就返回个4XX
的http header code
前端就以为是浏览器错误页面,直接认为是接口出错,所有为了平衡这个水平差异一般都建议改成
public function success(mixed $data = '', string $msg = '操作成功')
{
return response()->json(['code' => GlobalCode::SUCCESS, 'msg' => $msg, 'data' => $data]);
}
public function fail(Exception $e, $status = 200, array $headers = [])
{
if (request()->debug == env('DEBUG', GlobalCode::DEBUG) || env('DEBUG') == GlobalCode::DEBUG) {
return response()->json(['code' => GlobalCode::FAIL, 'msg' => $e->getMessage(), 'data' => $e->getTraceAsString()], $status, $headers);
} else {
return response()->json(['code' => GlobalCode::FAIL, 'msg' => $e->getMessage(), 'data' => $e->getMessage()], $status, $headers);
}
}
public function grant(Exception $e)
{
if (request()->debug == env('DEBUG', GlobalCode::DEBUG) || env('DEBUG') == GlobalCode::DEBUG) {
return response()->json(['code' => GlobalCode::GRANT, 'msg' => $e->getMessage(), 'data' => $e->getTraceAsString()]);
} else {
return response()->json(['code' => GlobalCode::GRANT, 'msg' => $e->getMessage(), 'data' => $e->getMessage()]);
}
}
interface GlobalCode
{
//接口返回成功
const SUCCESS = 200;
//返回错误
const FAIL = 400;
//需要授权
const GRANT = 401;
}
统一返回,json http code 200 用json的格式的code来区分状态
3,除了http基础知识的差别之外,还有一个问题就是统一请求和返回,避免后续接口维护的成本,假设你按照http协议的标准写完接口,之前的前端离职了,你还得给新的来的前端在解释一遍,前端得吧http协议学一遍才能理解你的接口为什么这些写,在就是和第三方对接的一般都是采用GET和POST,你整个其他的有些刚入门的后端也无法理解
4,还有一个问题也不是不容忽视的,就是get和post协议的相对安全性来说,虽然现在都是https,但是从请求可以带的数据量和安全性来说post更好
标签:code,http,GlobalCode,msg,json,api,DEBUG,POST,restful From: https://www.cnblogs.com/zx-admin/p/17493463.html