如何在Laravel中获取和验证应用程序/json数据?
我以如何在Laravel中获取和验证应用程序/json数据?,laravel,laravel-5.2,laravel-5.4,Laravel,Laravel 5.2,Laravel 5.4,我以application/jsoncontent类型将数据从客户端发送到服务器 然后我尝试在服务器端获取这些信息,如下所示: public function register(Request $request) { $data = $request->json()->all(); var_dump($data); die(); } 它返回空的array() 我还尝试使用以下方法验证传入的帖子: $validator = Validator::ma
application/json
content类型将数据从客户端发送到服务器
然后我尝试在服务器端获取这些信息,如下所示:
public function register(Request $request)
{
$data = $request->json()->all();
var_dump($data); die();
}
它返回空的array()
我还尝试使用以下方法验证传入的帖子:
$validator = Validator::make($request->json()->all(), []);
如何在Laravel中获取和验证应用程序/json数据
我得到的POST数据如下:
dd($_POST);
array:1 [▼
"application/json" => "{"id":6,"unique_code":null,"name":"О","secondname":"П","lastname":"Валерьевич","datebirth":"14/10/1991 00:00:00","taxcode":"4545","gender":"1","created_at":null,"file":"C:\\db\\tests\\22-07-2017\\MMM1.TXT","orders":{"profession":"Директор","pacient_id":null,"payment":"1","kind_work":"1,2","factory_name":"FALKO","factory_edrpou":"2020","factory_departament":"IT","status_pass":"1","office_address":"Kiev","unique_code":"0","enterprise_id":"12","status":null},"http_code":null}"
]
发布的数据将在请求正文参数包中结束。您可以通过
$request->all()
或$request->request->all()
获取数据
验证程序如下所示:
$validator = Validator::make($request->all(), []);
$this->validate($request->all(), []);
public function register()
{
$this->validate(request()->all(), [
'email' => 'required|email',
'password' => 'required|min:6|confirmed',
]);
}
深入潜水:
也可以在控制器中使用validate()
方法。看起来像这样:
$validator = Validator::make($request->all(), []);
$this->validate($request->all(), []);
public function register()
{
$this->validate(request()->all(), [
'email' => 'required|email',
'password' => 'required|min:6|confirmed',
]);
}
阅读更多关于这方面的文章
为了使事情变得更加复杂,您甚至不需要将请求实例注入控制器。您可以使用request()
helper函数。寄存器方法如下所示:
$validator = Validator::make($request->all(), []);
$this->validate($request->all(), []);
public function register()
{
$this->validate(request()->all(), [
'email' => 'required|email',
'password' => 'required|min:6|confirmed',
]);
}
发布的数据将在请求正文参数包中结束。您可以通过
$request->all()
或$request->request->all()
获取数据
验证程序如下所示:
$validator = Validator::make($request->all(), []);
$this->validate($request->all(), []);
public function register()
{
$this->validate(request()->all(), [
'email' => 'required|email',
'password' => 'required|min:6|confirmed',
]);
}
深入潜水:
也可以在控制器中使用validate()
方法。看起来像这样:
$validator = Validator::make($request->all(), []);
$this->validate($request->all(), []);
public function register()
{
$this->validate(request()->all(), [
'email' => 'required|email',
'password' => 'required|min:6|confirmed',
]);
}
阅读更多关于这方面的文章
为了使事情变得更加复杂,您甚至不需要将请求实例注入控制器。您可以使用request()
helper函数。寄存器方法如下所示:
$validator = Validator::make($request->all(), []);
$this->validate($request->all(), []);
public function register()
{
$this->validate(request()->all(), [
'email' => 'required|email',
'password' => 'required|min:6|confirmed',
]);
}
我有一个发布json的api。我有一个api端点,在这里我发布这个json
{
“电子邮件”:youremail@triumworks.com",
“电话”:“电话”,
“名称”:“名称”,
“密码”:“密码”
}
处理请求的相应控制器如下所示
public function create_account(Request $request){
$data = json_decode(file_get_contents('php://input'));
$response = new Responseobject;
$array_data = (array)$data;
$validator = Validator::make($array_data, [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6',
'phone' => 'required|string|min:12|max:12|unique:users',
]);
if($validator->fails()){
$response->status = $response::status_failed;
$response->code = $response::code_failed;
foreach ($validator->errors()->getMessages() as $item) {
array_push($response->messages, $item);
}
}
else{
$api_token = str_random(60);
$user = new User();
$user->api_token = $api_token;
$user->name = $data->name;
$user->email = $data->email;
$user->phone = $data->phone;
$user->password = bcrypt($data->password);
if($user->save()){
$response->status = $response::status_ok;
$response->code = $response::code_ok;
$response->result = $user;
}
}
return Response::json(
$response
);
}
这和上面的一样
public function create_account(Request $request){
$response = new Responseobject();
$validator = Validator::make($request->json()->all(), [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6',
'phone' => 'required|string|min:12|max:12|unique:users',
]);
if($validator->fails()){
$response->status = $response::status_failed;
$response->code = $response::code_failed;
foreach ($validator->errors()->getMessages() as $item) {
array_push($response->messages, $item);
}
}
else{
$api_token = str_random(60);
$user = new User();
$user->api_token = $api_token;
$user->name = $data->name;
$user->email = $data->email;
$user->phone = $data->phone;
$user->password = bcrypt($data->password);
if($user->save()){
$response->status = $response::status_ok;
$response->code = $response::code_ok;
$response->result = $user;
}
}
return Response::json(
$response
);
}
我有一个发布json的api。我有一个api端点,在这里我发布这个json
{
“电子邮件”:youremail@triumworks.com",
“电话”:“电话”,
“名称”:“名称”,
“密码”:“密码”
}
处理请求的相应控制器如下所示
public function create_account(Request $request){
$data = json_decode(file_get_contents('php://input'));
$response = new Responseobject;
$array_data = (array)$data;
$validator = Validator::make($array_data, [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6',
'phone' => 'required|string|min:12|max:12|unique:users',
]);
if($validator->fails()){
$response->status = $response::status_failed;
$response->code = $response::code_failed;
foreach ($validator->errors()->getMessages() as $item) {
array_push($response->messages, $item);
}
}
else{
$api_token = str_random(60);
$user = new User();
$user->api_token = $api_token;
$user->name = $data->name;
$user->email = $data->email;
$user->phone = $data->phone;
$user->password = bcrypt($data->password);
if($user->save()){
$response->status = $response::status_ok;
$response->code = $response::code_ok;
$response->result = $user;
}
}
return Response::json(
$response
);
}
这和上面的一样
public function create_account(Request $request){
$response = new Responseobject();
$validator = Validator::make($request->json()->all(), [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6',
'phone' => 'required|string|min:12|max:12|unique:users',
]);
if($validator->fails()){
$response->status = $response::status_failed;
$response->code = $response::code_failed;
foreach ($validator->errors()->getMessages() as $item) {
array_push($response->messages, $item);
}
}
else{
$api_token = str_random(60);
$user = new User();
$user->api_token = $api_token;
$user->name = $data->name;
$user->email = $data->email;
$user->phone = $data->phone;
$user->password = bcrypt($data->password);
if($user->save()){
$response->status = $response::status_ok;
$response->code = $response::code_ok;
$response->result = $user;
}
}
return Response::json(
$response
);
}
您是否检查了请求是否包含json数据?你能检查一下
$request->all()
$request->all()
中的内容会给你请求的有效载荷是json还是正常,但是要检查它是否是json请求,使用如果($request->expectsJson()){…}
然后使用返回响应()->json([key=>value])
你检查过请求是否有json数据吗?你能检查一下$request->all()
$request->all()
会给你请求负载是json还是正常,但是要检查它是否是json请求,使用如果($request->expectsJson()){…}
然后使用返回响应()->json([key=>value])
Nom它不工作,因为我有json格式的POST,当我使用内容类型:application/json
和POST数据时,我的API(使用Laravel构建)上面的例子对我来说非常好。@OPV$this->validate
自动检查请求是否为json并相应地响应,你可以检查方法本身你的意思是使用这个吗$validator=validator::make($request->all(),[]
?你能重新格式化你的答案吗,我不知道哪里是正确的解决方案,因为当我使用内容类型:application/json
并将数据发布到我的API(使用Laravel构建)时,我有json格式的POST上面的例子对我来说非常好。@OPV$this->validate
自动检查请求是否为json并相应地响应,你可以自己检查方法你的意思是使用这个吗?$validator=validator::make($request->all(),[]
?你能重新格式化你的答案吗,我不知道哪里是正确的解决方案如何使用Laravel验证这个问题?什么是新的Responseobject;
?我定义的一个类为我的回答提供了一个通用格式。看起来像这样它给我空:$data=json\u decode(file\u get\u contents('php://input'));//$response=新的Responseobject;$array_data=(数组)$data;
@OPV您可以编辑您的问题以包括整个函数,如果可能的话包括整个类吗?如何使用Laravel验证此问题?什么是新响应对象;
?我定义的一个类为我的响应提供通用格式。看起来像这样它给我空:$data=json\u decode(file\u get\u contents('php://input'));//$response=newresponseobject;$array_data=(array)$data;
@OPV您可以编辑您的问题以包含整个函数,如果可能的话还包括整个类吗?