@kirill-93

Длинные адреса для API — это нормально?

У меня вложенная структура сущностей: создается страница, для страницы создаются картинки, для каждой картинки создаются ссылки. То есть нужен crud для страницы, картинки и ссылки. Я делаю так:
Route::post('pages/create',  'PageController@create');
Route::post('pages/{page}/delete', 'PageController@delete');
Route::post('pages/{page}/images/create',  'PageController@createImage');
Route::post('pages/{page}/images/{image}/update',  'PageController@updateImage');
Route::post('pages/{page}/images/{image}/delete',  'PageController@deleteImage');
Route::post('pages/{page}/images/{image}/links/create', 'PageController@createLink');
Route::post('pages/{page}/images/{image}/links/{link}/update',  'PageController@updateLink');
Route::post('pages/{page}/images/{image}/links/{link}/delete',  'PageController@deleteLink');

Мне интересно, правильно ли это? Можно было бы делать их короче (не вложенными), но при таком подходе сразу понятно что картинка именно от страницы.
  • Вопрос задан
  • 223 просмотра
Решения вопроса 2
@d-sem
Можно сократить, если использовать HTTP методы в соответствии с их семантикой.

POST создание новой сущности
PATCH, UPDATE изменение
DELETE удаление
Ответ написан
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Работать будет. Правильно или нет зависит от того хочется реализовать REST или нет. Если REST то все это - дичь и надо прочитать про HTTP verbs: PUT, DELETE хотябы. И вообще про концепцию
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@bacon
Можно было бы делать их короче (не вложенными), но при таком подходе сразу понятно что картинка именно от страницы.
А зачем надо чтобы это было понятно, для какой цели?

Ну и насколько уникальны значения image и link? Если они уникальны, то с учетом PUT, DELETE и прочих
'pages/'
'pages/{page}/'
'pages/{page}/images/'
'images/{image}/'
'images/{image}/links/'
'links/{link}/'
Ответ написан
Ваш ответ на вопрос

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

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