本文目录
一、注册api
1.1 创建注册路由
注册路由我们把它归属到认证模块去,在routes/auth.php
下去写:
<?php
use App\Http\Controllers\Auth\RegisterController;
$api = app('Dingo\Api\Routing\Router');
$api->version('v1', function ($api) {
// 路由组
$api->group(['prefix' => 'auth'], function ($api) {
// 注册
$api->post('register', [RegisterController::class, 'store']);
});
});
1.2 创建注册控制器
运行命令php artisan make:controller Auth/RegisterController
,创建注册控制器。
1.3 创建表单验证类
运行命令php artisan make:request Auth/RegisterRequest
可以看到Http
文件夹下就多了Requests
文件夹以及验证文件。
效仿基础控制器,我们再建一个基础验证类。
运行命令:php artisan make:request BaseRequest
修改BaseRequest.php
为如下:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class BaseRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
}
然后RegisterRequest.php
继承BaseRequest
类,并写入规则:
<?php
<?php
namespace App\Http\Requests\Auth;
use App\Http\Requests\BaseRequest;
use Illuminate\Foundation\Http\FormRequest;
class RegisterRequest extends BaseRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|max:16',
'email' => 'required|email|unique:users',
'password' => 'required|min:6|max:16|confirmed',
];
}
}
unique:users
-> 邮箱在users
表中唯一。confirmed
-> 表示必须要传一个password_confirmation
确认密码字段并且和password
字段值相等。
然后注册控制器不使用原始的request
,而使用我们自己写的:
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\BaseController;
use App\Http\Requests\Auth\RegisterRequest;
use App\Models\User;
use Illuminate\Http\Request;
class RegisterController extends BaseController
{
/**
* 用户注册
*/
public function store(RegisterRequest $request) {
$user = new User();
$user->name = $request->input('name');
$user->email = $request->input('email');
$user->password = bcrypt($request->input('password'));
$user->save();
return $this -> response -> created();
}
}
1.4 测试
测试:
1.4.1 配置语言包
可以看到我们的验证提示都是英文的,我们可以去下载中文包去配置。
laravel配置语言包请查看这篇文章
1、默认效果
配置完中文语言包的效果:
2、自定义提示消息
如果说我们不想要它默认的,想要自定义的,我们可以在RegisterRequest.php
这样写(其他类似):
public function messages() {
return [
'email.unique' => '邮箱已经存在,你还想注册?怎么不上天呢?'
];
}
效果:
1.4.2 更改时区
在config/app.php
修改:'timezone' => 'Asia/Shanghai'
:
在学习的php的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。