json - 验证 Laravel 中的所有 JSON 请求
问题描述
我正在使用 RegisterRequest 请求类创建一个注册函数,它应该验证请求:
public function register(RegisterRequest $request)
{
//
}
请求验证 (RegisterRequest) 如下所示:
<?php
namespace App\Http\Requests\Api\User;
use App\Http\Requests\Request;
class RegisterRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true; // TODO: should secure this.
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required',
'email' => 'required|email|unique:users,email',
];
}
}
但是我收到名称和电子邮件丢失的错误,我认为这是因为请求是以 JSON 格式发送的。如何使此请求验证我提供的 JSON 输入?提前致谢。
我提出请求的方式:
handleSubmit (data) {
// Register User
this.$http
.post('/api/user/register', data)
.then(response => {
console.log(response)
// Clear form
// Show snackbar
})
.catch(error => {
console.error(error)
})
.finally(
// Update items in DataTable
console.log(data)
)
}
当我console.log(data);
向我展示这个时:
{"name":"asdsfsdf","email":"sdfsfd@sdfs.com"}
当我尝试像这样验证时:
$validator = Validator::make($request->json()->all(), [
'name' => 'required',
'email' => 'required|email|unique:users,email',
]);
它有效,但我想将此逻辑与控制器分开。
解决方案
根据您的评论,您没有将数据正确发送到服务器 --- 您将其作为数组键发送。在您的 AJAX/request 调用中,发送数据如下(我使用axios库作为演示,但架构也可以应用于 jquery 或其他 js 工具):
axios.post('/link/to/web/route', {
name: 'my name',
email: 'my email',
}).then(response=>{
alert('Data sent with success!')
}).catch(error=>{
alert('Error has occurred. Please check browser console');
console.log(error)
})
推荐阅读
- mysql - 我有一个计算并返回客户余额的函数,但它向我返回以下错误
- java - JAVA - 解析 XML 文件未正确存储数据
- java - 深度链接 - 从 Play 商店安装应用时获取数据
- apache - 禁止:您无权访问此服务器上的 / (centos 7)
- keras - 如何加载 .bin 模型文件?
- firebase - 数学运算在 Firebase Firestore 安全规则中有效吗?
- c# - 当我用阿拉伯语抓取网站时如何解决陌生人字符的问题?
- google-maps - 地点 ID 为地点详细信息 API 提供“未找到”错误
- java - 我们如何计算双向链表(循环列表)中的元素,我们不知道初始状态也不知道头/尾在哪里‽
- python - Python动态地将参数传递给字符串格式函数