Я испортил мои спокойные маршруты, используя только почту и получить? - PullRequest
0 голосов
/ 28 ноября 2018

Прочитав статью о Restful, я не слишком уверен, использовал ли я правильные пути и HTTP-глаголы для своих маршрутов.Например:

Это мой маршрут для отображения изображения:

Route::get('/image/{id}', 'PagesController@specificImage')->name('specificImage');

, и это маршрут для удаления изображения:

Route::get('/deleteImage/{id}', 'ArtworkController@deleteImage')->name('deleteImage');

Было бы большеправильно изменить маршрут удаления изображения на:

Route::delete('/image/{id}', 'ArtworkController@deleteImage')->name('deleteImage');

Я изменил GET на DELETE и изменил путь с /deleteImage/{id} на /image/{id}.Я думаю, это имеет больше смысла, но мне интересно, будет ли конфликт между GET /deleteImage/{id} и DELETE /deleteImage/{id}.

Безопасно ли предположить, что маршрут для обновления изображения (которыйбудет добавлен в будущем) должен выглядеть примерно так:

Route::patch('/image/{id}', 'ArtworkController@updateImage')->name('updateImage');

Другой маршрут, который, я думаю, может быть немного неправильным, - это мой маршрут, который использовался для внесения изменений в ваш профиль.

Этот маршрут показывает вам профиль пользователя:

Route::get('/profile/{username}', 'PagesController@profile')->name('profile');

, и этот маршрут используется для внесения изменений в профиль:

Route::patch('/profile/{user}/update', 'UsersController@updateProfile')->name('updateProfile');

Поскольку этот маршрут использует PATCH, могу ли яудалить часть пути /update и по-прежнему работать, даже если это тот же путь, что и маршрут GET, который показывает профиль?

По существу, возможность использовать один и тот же путь для получения, созданияОбновление, удаление и просто изменение глагола HTTP делает его намного более удобным для чтения.Я понимаю, что могу использовать только GET и POST, но все еще работает нормально, но мне нужно знать, если это не так.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Если вы следуете стандартному способу обработки маршрутов CRUD в Laravel, внесенные вами изменения являются частично правильными.На самом деле вы можете сделать так, чтобы Laravel автоматически генерировал для вас стандартизированные маршруты, используя Route::resource, но вам нужно было бы иметь все методы для работы с вашей моделью в одном контроллере (например, ImageController для изображений).

Route::resource('images', 'ImageController');

Вы можете выполнить команду «php artisan route: list» в командной строке или терминале, чтобы увидеть, какие маршруты генерируются ресурсом Route ::.См. эту статью для получения дополнительной информации.

Теперь, относительно вашего исходного вопроса, стандарты будут такими:

Route::get('images/{id}', 'ImageController@show') // to view the image
Route::get('images/create', 'ImageController@create') // to view the create new image page
Route::post('images', 'ImageController@store') // to store a new image
Route::get('images/{id}/edit', 'ImageController@edit') // to view the edit page
Route::patch('images/{id}', 'ImageController@update') // to save changes
Route::delete('images/{id}', 'ImageController@delete') // to delete

Не будет конфликтов между маршрутами, использующими разные методы.которые имеют тот же URL.Вы можете иметь несколько маршрутов, которые указывают на images/{id}, если методы различны.

0 голосов
/ 28 ноября 2018

В REST URL всегда должен содержать только путь к ресурсу.
Нельзя использовать глаголы, только существительные.
Действия над ресурсом выполняются с использованием методов (POST, GET,DELETE и т. Д.).

В вашем случае ресурс равен image, поэтому конечная точка выглядит следующим образом: /images/{id}.
К delete изображение (ресурс): DELETE/images/{id}.
Чтобы заменить изображение (ресурс): PUT /images/{id}

То же относится и к учетной записи, ресурс в данном случае - /profile/{username}.
Чтобы обновить частьпрофиль (например, возраст), используйте PATCH /profile/{username}.

Обратите внимание:
PUT используется для вставки / замены ресурса
PATCH используется для изменения некоторыхатрибутов существующего ресурса.

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