Требование api одного сервиса, чтобы я мог отобразить json своей страницы с таким видом:
website.com/json?url=website.com/data/hash
где
website.com/data/hash
- ссылку, которую нужно отобразить в виде json.
Я беру GET запрос и достаю нужную часть из сслки (path):
$url = parse_url($_GET['url'])['path']
Я точно знаю, что path -
/data/hash
- содержит 2 слеша.
И чтобы достать хеш, я могу воспользоваться explode
$path = explode("/", $url);
.
Валидный URL будет иметь массив из трёх значений^
0 - пустой
1 - data
2 - hash
Я не хочу лишний раз долбать базу, если пользователь сделал кривой запрос, к примеру:
website.com/json?url=website.com/data/hash/
website.com/json?url=website.com/data/hash///
website.com/json?url=website.com/data/hash/index.php
Поэтому я делаю такую конструкцию:
if (count($path) === 3) {
# запрос в БД и обработка
} else {
http_response_code(404);
die();
}
Проблема заключается в том, что hash может быть сам по себе кривой (к примеру, пользователь неверно скопировал ссылку или запись удалена), поэтому внутри обработки я опять должен вывести ошибку 404
if (count($path) === 3) {
# запрос в БД и обработка
if ($result === true) { // если запись найдена
#выводим результат
} else {
http_response_code(404);
die();
}
} else {
http_response_code(404);
die();
}
Меня напрягает двойное написание
http_response_code(404); die();
. Можно ли как-то избежать этого? Или это жертва за то, что я не хочу пускать к базе пользователей с неверным url?