@vinegred

Как использовать данные из ответа после POST запроса на PHP?

Здравствуйте!

Со своими скудными знаниями в PHP пытаюсь написать скрипт, которые добавляем в CRM заявку. В CRM системе есть отдельный список городов. Каждому городу присвоен свой ID. Чтобы заявка создалась корректно, мне нужно сначала определить ID города, а потом этот ID подставлять в POST запрос создающий заявку.

Проблема в том, что я никак не могу избавиться от второго GET запроса. Разум подсказывает, что можно использовать данные из RESPONSE после POST, но все мои синтаксические изыски и вариации на найденных в инете примерах, не дали результата.

Вот PHP код:

$get_city_params = http_build_query($city_params); 

$search_city = json_decode(file_get_contents('https://site.com/api/core/search?'. $get_city_params)); 

// Извлекаем результаты поиска 
$found_city_result = $search_city->totalResults;
$found_city = $search_city->results[0]->itemId; 

if ($found_city_result === 0) {

	// Если город не найден, то создаем новую запись...
	$request_params = array(  
		'key' => $key,
		'author' => $author, // id пользователя который будет автором записи в базе данных (админ)
		'category' => 3, // id категории, в которой находится город или по другому Страна
		'fields[5]' => $city // title в базе данных
	); 

	$create_city = file_get_contents('https://site.com/api/cms/records/3?', false, stream_context_create(array(
		'http' => array(
			'method'  => 'POST',
			'header'  => 'Content-type: application/x-www-form-urlencoded',
			'content' => http_build_query($request_params)
		)
	))); 

	$search_city = file_get_contents('https://site.com/api/core/search?'. $get_city_params)); 

	// Извлекаем ID cозданного города
	$found_city = $search_city->results[0]->itemId; 

}


После этого POST запроса:

$create_city = file_get_contents('https://site.com/api/cms/records/3?', false, stream_context_create(array(
		'http' => array(
			'method'  => 'POST',
			'header'  => 'Content-type: application/x-www-form-urlencoded',
			'content' => http_build_query($request_params)
		)
	)));


Получаю (смотрю в логах) вот такой RESPONCE:

{
    "id": 163,
    "title": "Krasnodar",
}


Как избавиться от дублирующего поискового GET запроса и напрямую взять данные из responce после POST?
  • Вопрос задан
  • 91 просмотр
Пригласить эксперта
Ответы на вопрос 1
seganim
@seganim
PHP-программист, программный инженер
Вы отправляете город текстом? Почему бы не сделать на поле с вводом города автокомплит с городами и сразу передавать ID в POST? Кстати, создавать новый город каждый раз, когда введено название, не найденное в базе, такое себе занятие. Уж лучше сделать справочник и его использовать.

Ну а в Вашем случае можно все обработчики с первой части впихнуть в обработку GET запроса.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы