新坑,主要记载一下学长布置给我们的任务如何完成以便备忘,并且写一点自己读源码的收获
第一次发布的任务:
这次的任务是编写一个中间件判断发送的请求是否为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测试通过,喜
Comments | NOTHING