Вот наша текущая настройка. У нас есть приложение iOS, которое выполняет вызовы API к моему PHP-скрипту, который обрабатывает запрос и запрашивает базу данных через PDO и MySQL. Таким образом, в этом случае существует API update_items.php, которому приложение iOS отправляет значения параметров, и в зависимости от того, обновляет ли пользователь элемент или удаляет элемент, API обрабатывает его соответствующим образом и запрашивает базу данных несколько раз (все в одном запросе). ).
Вот мое затруднительное положение. У меня работает бит обновления, но как я могу использовать тот же API обновления для удаления элемента через запрос POST? Быстрое решение, которое придумал мой iOS-разработчик, заключается в том, что если пользователь проводит пальцем по экрану, чтобы удалить элемент, он отправляет имя элемента как «DELETE» или что-то в этом роде. Это инициирует запрос на удаление записи базы данных. Мне это не нравится, потому что любой может это понять и использовать систему. Например, при редактировании элемента все, что мне нужно сделать, это ввести DELETE для имени элемента, и API обработает его так же, как запрос на удаление. Должен быть лучший способ, и я буду признателен за любые предложения. Ниже приведен мой текущий PHP-код, который обрабатывает вызов API. Однако я предложил одновременно отправлять два вызова API после того, как пользователь нажимает «Готово» для редактирования страницы своего элемента. Один для update.php, если пользователь обновляет элемент, и другой для delete.php, если пользователь решает удалить элемент.
// now check for updating/deleting ingredients for the menu item
if( isset($the_request['id']) ) {
/*
iterate through avalialable values because there could be multiple ingredient ids involved. handle it.
*/
for( $i=0;$i $the_request['id'][$i]
);
// the query
$query = 'DELETE FROM TABLE WHERE id = :id';
break;
default:
// assign passed parameters for query
$params = array(
':name' => $the_request['name'][$i],
':price' => $the_request['price'][$i]
);
// Remove the empty values
$params = array_filter($params, function($param) { return !empty($param); });
// Build an array of SET parameters
$set = array_map(function($key) {
return sprintf('%s = %s', substr($key, 1), $key);
}, array_keys($params));
// don't forget the id
$params[':id'] = $the_request['id'][$i];
// the query
$query = sprintf('UPDATE TABLE SET %s WHERE id = :id', implode(', ', $set));
}
// prepare statement
if( $ingStmt = $dbh->prepare($query) ) {
$ingStmt->execute($params);
} else {
echo json_encode(array('error' => $dbh->errorInfo().__LINE__));
}
}
$ingStmt->closeCursor();
}
Подробнее здесь: https://stackoverflow.com/questions/231 ... e-api-call