Динамически изменяйте URL для переключения между ключом apis с помощью оператора if - PullRequest
0 голосов
/ 22 октября 2018

Вот моя проблема:

Мне нужно отправить некоторые данные из CRM в другую.Теперь проблема в том, что URL должен быть динамическим, потому что, к сожалению, он имеет разные ключи API.

Итак, допустим, что я хочу отправить некоторые данные, в зависимости от местоположения, он изменит ключ API.Лучше привести пример:

    $url = 'https://my_website/api/student/add';

    $myvars = 'firstName=' . $new_array['firstName'] 
                           . '&lastName=' . $new_array['lastName'] 
                           . '&locationID=' . $new_array['locationID'] 
                           . '&currentStatus=' . $new_array['currentStatus'];

    $apikey;
    function apikey() {
        if ($new_array['locationID'] == 1) {
            $apikey = $toronto;
        } elseif($new_array['locationID'] == 2) {
            $apikey = $newyork;
        } else {
           $apikey = $rome;
        }
    }

    $ch = curl_init( $url );
    curl_setopt( $ch, CURLOPT_POST, 1);
    curl_setopt( $ch, CURLOPT_POSTFIELDS, $myvars);
    curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt( $ch, CURLOPT_HEADER, 0);
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);

    $response = curl_exec( $ch );

Первым делом: куда мне добавить свой $ apikey, чтобы автоматически добавить его в конец моего URL?

Мои поля взяты из другого массива:

$new_array = [
    'firstName' => $json_final['core']['firstname']['value'],
    'lastName' => $json_final['core']['lastname']['value'],
]; ..

И так, у вас есть идея.

Все ключи API, как я говорил в самом начале, различны:

$toronto = '123456';
$rome = '789101112';

и т. Д.on.

По сути, мне нужно создать динамический URL-адрес на основе формы, которую мой пользователь уже отправил на мой сайт, и я хочу направить его на два CRM.Игнорируя первый, который уже в порядке, мне нужно создать второй URL-адрес, чтобы публиковать те же данные в другом с динамическими функциями.

Ответы [ 2 ]

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

Есть функция PHP, которая делает то, что вы делаете здесь:

    $myvars = 'firstName=' . $new_array['firstName'] 
. '&lastName=' . $new_array['lastName'] 
. '&locationID=' . $new_array['locationID'] 
. '&currentStatus=' . $new_array['currentStatus'];

Вы можете использовать http_build_query для этого:

$myvars = http_build_query($new_array);

Какнасколько эта функция:

function apikey() {
    if ($new_array['locationID'] == 1) {
        $apikey = $toronto;
    } elseif($new_array['locationID'] == 2) {
        $apikey = $newyork;
    } else {
       $apikey = $rome;
    }
}

Это ничего не делает.Он ничего не возвращает и не обращается к $apikey, определенному вне функции scope .

Я бы предложил создать массив, который связывает locationID с ключом API.Я бы также предложил загрузить его из файла конфигурации, чтобы вам не пришлось менять код при изменении ключа API.

$keys = [
    1 => '123456',
    2 => '789101112',
    //etc.
];

Затем вы можете использовать locationID в $new_array для ссылки на это.Добавьте его в массив и затем создайте запрос.

$new_array['apiKey'] = $keys[$new_array['locationID']];
$myvars = http_build_query($new_array);
0 голосов
/ 22 октября 2018

что-то вроде этого подойдет, если я правильно понял

function getApiKey($locationId) {
  $apiKeys = [
    1 => 12345, 2 => 6789... // key is the locationId and value is the api key
  ];
  return !empty($apiKeys[$locationId]) ? $apiKeys[$locationId] : $apiKeys['defaultKey'];
}

$myvars = 'firstName=' . $new_array['firstName'] 
. '&lastName=' . $new_array['lastName'] 
. '&locationID=' . $new_array['locationID'] 
. '&currentStatus=' . $new_array['currentStatus']
. '&apikey=' . getApiKey($new_array['locationID']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...