为什么大多数restful-api都要求使用POST

本文讨论了前后端开发中关于HTTP协议理解的差异,提出使用统一的返回码(如200,400,401)并通过JSON格式传递状态,以降低学习成本和维护难度。同时强调了GET和POST的安全性考虑,尤其是在HTTPS背景下。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2023年6月20日13:50:56

1,因为前后端对http的认识差异比较大,而且很多前端开发有些是培训速成或者其他行业转过来的,所以基础知识差异大,你要求他们具备和后端一样的基础知识水平,不太可能

2,http协议支持的方法 GET方法:获取资源,POST方法:传输实体主题,PUT方法:传输文件,HEAD方法:获取报文首部,DELETE方法:删除文件,OPTIONS方法:询问支持的方法
http的头部code的200系列,300系列,400系列,500系列,如果你完全按照http协议标准写后端接口无可厚非,但是为了避免相关问题,比如系统错误你就返回个4XXhttp 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更好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值