REST API и выберите где в списке - PullRequest
0 голосов
/ 10 декабря 2018

Я разрабатываю REST API в php с помощью json.Я разработал метод GET, который выполняет этот запрос: SELECT mac FROM pc_list where id IN (1,2,3).Это мой метод в файле pc_list.php и файле .htaccess.

function get_mac_by_id($id=0){
global $connection;
$query="SELECT id FROM pc_list";
if($id!=0){
$query.="WHERE id IN (".$id.")";
 }
$result=mysqli_query($connection,$query);
if(mysqli_num_rows($result)­ >0){
$response=array();
while($row=mysqli_fetch_assoc($result))
 {
$response=['macs'][]=$row;
}
header('Content-Type: application/json');
echo json_encode($response);
}
}

.htaccess:

 RewriteEngine On
ReriteRule ^pc_list/?$ pc_list.php [NC,L]
RewriteRule ^pc_list/([0-9]+)/?$ pc_list.php?id=$1 [QSA,NC,L]

Я выполнил этот URL localhost / api / REST / pc_list / 1,2 Я получаю эту ошибку: The requested URL /api/REST/pc_list/1,2 was not found on this server, когда я ее выполняю, я получаю результат localhost / api / REST / pc_list / 1

Что я знаю, что в соответствии с моим файлом .htaccess запятая считаетсяперенаправление не характер.Я хочу найти способ заставить его работать.

1 Ответ

0 голосов
/ 30 декабря 2018

Причина ошибки в том, что регулярное выражение ^pc_list/([0-9]+)/?$ для RewriteRule не допускает запятые.Также вы хотите убедиться, что вы экранировали переменную $ id (типа string) перед ее вставкой в ​​переменную $ query.

Я бы изменил регулярное выражение с ^pc_list/([0-9]+)/?$ на ^pc_list/([0-9,]+)/?$ или даже ^pc_list/([^/]+)/?$ изатем выполните правильный анализ и проверку ввода в PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...