Intereting Posts
Предупреждение: preg_replace (): Неизвестный модификатор 'g' PHP_INT_SIZE возвращает 4, но моя операционная система 64-битная Ошибка SMTP Connect (). Сообщение не отправлено. Ошибка отправителя: Ошибка SMTP Connect () Ошибка синтаксиса MySQL говорит «около 1», но у меня нет «1» в моем запросе Сложный тип как индекс массива Найти и заменить слово в текстовом файле как загрузить несколько изображений с помощью codeigniter Обратное очищение изображения с помощью PHP Как я могу отобразить изображение из вложений документа в CouchDB? PHP Script для вычисления значений форм со значениями по умолчанию, возможно, с использованием операторов if и else для submit. to page2.php Как получить все заявления использования, объявленные в файле класса PHP как проверить, сколько видеопотока было просмотрено пользователем с помощью php CakePHP выбирает значение по умолчанию для входа SELECT Создание разделов, связанных с объектами Как добавить http: //, если он не существует в URL?

Дизайн дизайна LARARE RESTful API

Я новичок в Laravel (4 и 5), а недавно я работаю над RESTful API. Чтобы разрешить несколько версий API, я использую URL для определения версии.

Я прочитал этот пост и кажется, что большинство людей следуют этому подходу: Как организовать различные версии REST API-контроллеров в Laravel 4?

Структуры папок:

/app /controllers /Api /v1 /UserController.php /v2 /UserController.php 

И в файлах UserController.php я задал пространство имен соответственно:

 namespace Api\v1; 

или

 namespace Api\v2; 

и в маршрутах:

 Route::group(['prefix' => 'api/v1'], function () { Route::get('user', 'Api\v1\UserController@index'); Route::get('user/{id}', 'Api\v1\UserController@show'); }); Route::group(['prefix' => 'api/v2'], function () { Route::get('user', 'Api\v2\UserController@index'); Route::get('user/{id}', 'Api\v2\UserController@show'); }); 

URL будет простым http: //…./api/v1 для версии 1 и http: //…./api/v2 для версии. Это прямолинейно.

Мои вопросы: Что делать, если я создаю небольшое обновление api, скажем v1.1, как мне организовать структуру папок? Я думал, что это так, и должно быть все равно, как точка является действительным именем папок?

 /app /controllers /Api /v1 /UserController.php /v1.1 /UserController.php /v1.2 /UserController.php /v2 /UserController.php 

Кроме того, как мне написать пространство имен? Это не пространство имен, подобное этому

 namespace Api\v1.1; 

Есть ли соглашение об именах, на которое я могу ссылаться для использования «точки»?

Примечание. Я не хочу называть его версией v2, потому что это не серьезное обновление.

Related of "Дизайн дизайна LARARE RESTful API"

IMO, незначительные обновления не должны публиковать изменения в API. Поэтому мое предложение – придерживаться целочисленных версий API. У улучшений нет проблем, но существующие конечные точки должны вести себя как обычно.

Таким образом, ваши API-версии будут синхронизироваться с префиксами маршрутов и пространствами имен, а также с тестами.

ПРИМЕР

  1. Вы начинаете с версии 1.0
  2. Вы делаете небольшое изменение (например, git-tag v1.1), который не вносит никаких изменений в ваш api. Нужно ли разработчикам делать что-либо еще в своем коде? Нет, нет. Таким образом, вы можете безопасно оставить URI-префикс в V1 , чтобы разработчики, вызывающие ваш api, не должны изменять весь свой код, который вызывает ваш API (и, следовательно, автоматически извлекают выгоду из новой младшей версии). Возможно, вы просто исправили ошибку, что делает их код так же, как и ожидалось, или вы опубликовали новую функцию, которая сама по себе не нарушает существующие функции-вызовы.
  3. Ваше приложение растет, и вы публикуете новую переработанную версию вашего API, которая содержит взломанные изменения. В этом случае вы публикуете новый API-URI-префикс ( V2 ).

Имейте в виду, что вы можете, конечно, отслеживать второстепенные версии внутри (например, в SCM), но разработчикам не нужно будет менять все свои API-вызовы, чтобы извлечь выгоду из этого небольшого исправления, которое вы опубликовали. В любом случае, приятно, если вы сообщите своим клиентам о новых младших версиях и исправлениях или улучшениях, которые они предлагают (блог, информационный бюллетень, ..)

Позвольте мне добавить, что я не знаю каких-либо RESTful API с небольшими префиксами API-URL-адресов, поэтому я думаю, что это довольно распространенная практика.

Вы не можете использовать точки, вместо этого используйте подчеркивания.

Но…

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