请问在一个接口内怎么根据请求方式对参数进行分别验证呢?

场景:有一个store方法,当前端GET请求时返回用户的身份证号;当POST请求时,前端传入“身份证号”和“合同编号”两个参数进行信息存储。

问题:我在requests下创建了一个验证身份证号和合同编号的验证类,但是我只想请求方式为post请求时进行验证,get请求就跳过验证,请教各位大佬有没有好的解决方案呢?

代码如下:

请问在一个接口内怎么根据请求方式对参数进行分别验证呢?

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 9
陈先生
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class IndexController extends Controller
{
    public function index(Request $request)
    {
        //
        if ($request->isMethod('get')) {
            return '身份证号码';
        }
        if ($request->isMethod('post')) {
            return '身份证号码和合同编码已经存起来了!';
        }
    }
}
2年前 评论

这你在定义路由的时候直接指向两个不同的 控制器方法不就好了嘛

2年前 评论

你不都已经写了验证器了吗,直接在验证器中处理就可以了

class BindRequest
{
...
public function rules()
{
    $rules = [];
    switch($this->method()) // 获取 request 请求方式
    {
        case "POST" : 
        $rules = [
             "id_number" => "required|regex: ...",
             "contract_number" => "required|numeric"
        ];
    }
    return $rules;
} 
}
2年前 评论
巴啦啦臭魔仙 (楼主) 2年前

简单的验证直接在控制器使用 validator 即可,使用formRequest 的话三楼正解。

2年前 评论
陈先生

不好意思 ,答非所问了, laravel的路由可以完整区分get post , 你写两个方法配合两条路由 再加两个request 就好了 ,尽量不要写在一起

2年前 评论
oldopr 1年前

我记得有个场景配置

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!