由於我们想防范使用我们API的使用者传入恶意的参数或传入我们预期中型态的参数,我们需要做好Request validation的防护
$ sail artisan make:request CreatePostRequest
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Services\PostService;
use App\Http\Requests\CreatePostRequest;
use Illuminate\Http\JsonResponse;
class PostController extends Controller
{
protected $service;
public function __construct(PostService $service)
{
$this->service = $service;
}
/**
* 建立文章
* @param CreatePostRequest $request
* @return JsonResponse
*/
public function create(CreatePostRequest $request): JsonResponse
{
$result = $this->service->create($request->all());
return response()->json($result);
}
}
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class CreatePostRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'title' => 'required|string|unique:posts',
'content' => 'required|string',
];
}
}
required可以替换为:
其它:
return [
'title' => 'required|string|unique:posts|max:10|min:2',
];
return [
'user_id' => 'required|integer|exists:user_id',
];
return [
'sort' => [
'required',
'string',
Rule::in(['asc', 'desc'])
],
];
return [
'sort' => [
'required|string|in:asc,desc',
],
];
return [
'start_at' => [
'required',
'date'
],
'end_at' => [
'required',
'date',
'after:start_at'
],
]
'email' => 'email:rfc,dns'
看到标题的大家可能会感到疑惑: 为何是介绍第二次参加社群研讨会? 因为比起第一次参加社群研讨会,在这...
为何会需要 .gitignore ? 常用的情况如下: 是否常常在 commit 档案时,会发现有一...
Button()方法有在前两天的时候提了一些,今天会更详细的介绍Buton()的使用方法 (o゜▽゜...
今天练习的主题是用Vue实现列表的展开与隐藏功能 会分为两个范例让大家做演练 范例一 先将isSho...
昨天我们尝试将 Hexo 备份到储存库另外一个分支,但如果哪一天真正需要使用这个备份还原本机环境怎麽...