Как предотвратить неопределенное свойство: stdClass :: $ data при попадании в API - PullRequest
0 голосов
/ 09 октября 2018

Я создал форму, используя Laravel, посредством которой я получаю данные от пользователя, которые должны храниться в API.Я написал отдельную функцию с именем global_curl , которая должна отправлять данные в API. Проблема в том, что когда я пытаюсь подключиться к REST API с помощью пост-запроса, я получаю следующую ошибку: (1 /1) ErrorException Неопределенное свойство: stdClass :: $ data

Мой контроллер

//Post Request of plan entries
public function validatePlanEntries(Request $request){
    $data = array(
        'DobPrincipalTraveller' => $request->dob,
        'TravelStartDate' => $request->departure_date,
        'TravelEndDate' => $request->return_date,
        'CoverOption' => $request->cover,
        'DobOfSpouse' => $request->spousedob,
        'Children' => '2018-10-07',
        'WithSpouse' => 0
    );
    // dd($data);
   /*Posts data to Travel Plans API*/
   $travelplan_data = $this->global_Curl($data, 'api/travel/get-plans')->data;
}

Функция Curl

public function global_Curl($data, $url){
    //dd($_ENV['API_ENDPOINT_NGINX_IP'] . '/' . $url);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, ($_ENV['API_ENDPOINT_NGINX_IP'] . '/' . $url));
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = json_decode(curl_exec($ch));
    curl_close($ch);
    return $response;
}

Структура данных API от POSTMAN

{
    "DobPrincipalTraveller":"1978-01-22",
    "TravelStartDate":"2018-10-20",
    "TravelEndDate":"2018-10-25",
    "CoverOption":"Standard",
    "WithSpouse":"1",
    "DobOfSpouse":"1985-03-18",
    "Children":[
        {
            "DateOfBirth":"2015-05-23"
        },
        {
            "DateOfBirth":"2016-09-13"
        }
    ]
}

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

должно быть так: когда вы передаете массив в функцию, он должен принимать массив в качестве параметра, поэтому вы должны определить свою функцию curl, как я.

//Post Request of plan entries
public function validatePlanEntries(Request $request){
    $data = array(
        'DobPrincipalTraveller' => $request->dob,
        'TravelStartDate' => $request->departure_date,
        'TravelEndDate' => $request->return_date,
        'CoverOption' => $request->cover,
        'DobOfSpouse' => $request->spousedob,
        'Children' => '2018-10-07',
        'WithSpouse' => 0
    );
    // dd($data);
   /*Posts data to Travel Plans API*/
   $travelplan_data = $this->global_Curl($data, 'api/travel/get-plans');
}

public function global_Curl(array $data, $url){
    //dd($_ENV['API_ENDPOINT_NGINX_IP'] . '/' . $url);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, ($_ENV['API_ENDPOINT_NGINX_IP'] . '/' . $url));
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = json_decode(curl_exec($ch));
    curl_close($ch);
    return $response;
}

попробуйте это ..надеюсь, что это будет работать

0 голосов
/ 09 октября 2018

Так и должно быть.

$travelplan_data = $this->global_Curl($data, 'api/travel/get-plans');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...