新柚杯后端开发笔记一


新坑,主要记载一下学长布置给我们的任务如何完成以便备忘,并且写一点自己读源码的收获


第一次发布的任务:

这次的任务是编写一个中间件判断发送的请求是否为post类型,如果不是返回错误提示信息404;如果是post类型,继续判断请求中有没有username和password字段,如果有缺省也返回错误信息403,如果没有缺省返回的json数据需要有类似“success”的成功提示信息。所有的测试都需要在本地的postman中进行,编写的中间件放在middleware/work下。

中间件是用来过滤请求的,可以很好的实现要求,从而减少控制器里的代码量
首先在指定目录下使用命令创建中间件

php artisan make:middleware RequestCheck

这样就创建好基本的中间件模板了,接着在kernel中注册刚刚创建的中间件
在protected $routeMiddleware中加上

'RequestCheck' =>\App\Http\Middleware\Work\RequestCheck::class

注意路径
接着去编写中间件

    <?php

    namespace App\Http\Middleware\Work;

    use Closure;
    use Illuminate\Http\Request;

    class RequestCheck
    {
        /**
         * Handle an incoming request.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  \Closure  $next
         * @return mixed
         */
        public function handle(Request $request, Closure $next)
        {
            if($request->method()=='POST'){
                if($request->input('name')==null or $request->input('password')==null){
                return response()->json([
                    'ret'  => 403,
                    'desc' => 'invalide username or password',
                    'data' => 'username and password can not be null'
                ],403);
                }
                else{
                return response()->json([
                    'ret'  => 200,
                    'desc' => 'OK!',
                    'data' => 'success'
                ], 200);
                }
            }
            else{
                return response()->json([
                    'ret'  => 404,
                    'desc' => 'NOT FOUND',
                    'data' => 'wrong request way'
                ], 404);
                
            }
            return $next($request);
        }
    }

中间件的编写还是相当直观与简单的,$request->method判断请求方法,$request->input判断输入
接着去修改路由,由于是api开发,在api.php中加上

Route::middleware('RequestCheck')->any('/check',[WorkController::class,'RequestCheck']);

接着创建对应控制器中的方法

public function RequestCheck(Request $request){
    $this->middleware('RequestCheck');
}

postman测试通过,喜

声明:punkginger's blog|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 新柚杯后端开发笔记一


曾有言“将两件不相干的事物的名称组合在一起就是一个摇滚乐队名”,我也许有这种潜质...?