如何获取和验证 Laravel 中的 application/json 数据?
How to get and validate application/json data in Laravel?
我以 application/json
内容类型从客户端向服务器发送数据。
然后我尝试在服务器端获取此信息,例如:
public function register(Request $request)
{
$data = $request->json()->all();
var_dump($data); die();
}
它returns我空array()
我还尝试使用以下方法验证传入的 POST:
$validator = Validator::make($request->json()->all(), []);
如何获取和验证 Laravel 中的 application/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(), []);
深入研究:
或者您可以在控制器中使用 validate()
方法。看起来像这样:
$this->validate($request->all(), []);
在 Laravel docs 阅读更多相关信息。
为了使事情变得更加复杂,您甚至不需要将 Request 实例注入您的控制器。您可以使用 request()
辅助函数。注册方法如下所示:
public function register()
{
$this->validate(request()->all(), [
'email' => 'required|email',
'password' => 'required|min:6|confirmed',
]);
}
我有一个api我postjson。我有一个 api 终点,我 post 这个 json
{
"email":"youremail@triumworks.com",
"phone": "phone",
"name": "name",
"password": "password"
}
处理请求的相应控制器看起来像
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
);
}
我以 application/json
内容类型从客户端向服务器发送数据。
然后我尝试在服务器端获取此信息,例如:
public function register(Request $request)
{
$data = $request->json()->all();
var_dump($data); die();
}
它returns我空array()
我还尝试使用以下方法验证传入的 POST:
$validator = Validator::make($request->json()->all(), []);
如何获取和验证 Laravel 中的 application/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(), []);
深入研究:
或者您可以在控制器中使用 validate()
方法。看起来像这样:
$this->validate($request->all(), []);
在 Laravel docs 阅读更多相关信息。
为了使事情变得更加复杂,您甚至不需要将 Request 实例注入您的控制器。您可以使用 request()
辅助函数。注册方法如下所示:
public function register()
{
$this->validate(request()->all(), [
'email' => 'required|email',
'password' => 'required|min:6|confirmed',
]);
}
我有一个api我postjson。我有一个 api 终点,我 post 这个 json
{
"email":"youremail@triumworks.com",
"phone": "phone",
"name": "name",
"password": "password"
}
处理请求的相应控制器看起来像
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
);
}