dhilt / dharmadict

MIT License
1 stars 2 forks source link

API contracts refactoring #22

Closed dhilt closed 6 years ago

dhilt commented 6 years ago

Нужно привести в порядок адреса API методов. На примере User:

Как ты понимаешь, это потребует изменений как на сервере, так и на клиенте. Причем на update нужно перенести id из body запроса в url запроса. Пилить метод update контроллера не придется, т.к. он и так принимает 2 параметра отдельно.

То же надо проделать и для Terms. Все базовые обращения должны начинаться с /api/terms. Пока этому отвечает только DELETE. GET /api/search надо заменить на GET /api/terms, а GET /api/translation на GET /api/terms/translation. И т.п..

В общем, см. https://en.wikipedia.org/wiki/Representational_state_transfer в части "Relationship between URL and HTTP methods". Кстати, на update наверное следует использовать PATCH вместо PUT, т.к. мы не создаем новый документ в БД, если документ не был найден по id, мы возвращаем ошибку.

Все тесты должны проходить, их тоже придется править.

dyuvzhenko commented 6 years ago

@dhilt Вроде все готово. Эти дела расплылись на 6 коммитов, так что прикреплять их не буду. Из необычного было только то, что fetch отказался понимать метод PATCH, если его передавать строкой с строчными буквами. И еще у нас не было запроса на список пользователей, как мне кажется /api/common не попадает под эту категорию. Там и пользователи отсортированы по роли, и языки, и вдобавок может быть скоро я попытаюсь прикрепить там переводы ui для клиента, для задачи о интернационализации.

dyuvzhenko commented 6 years ago

@dhilt Подумал, может стоит на вспомогательном методе asyncRequset в этом месте https://github.com/dhilt/dharmadict/commit/1c808f02a66a78bf010479aed4a5f4fcbc16de16#diff-59ef6f2c45355375ebb02fd8013a4297R13 получаемый тип запроса попросту приводить к заглавным буквам с помощью .toUpperCase(). Так можно будет в будущем наверное избежать некоторых недопониманий с fetch.

dhilt commented 6 years ago

@BitDen Мне нравится идя с toUpperCase, если есть с этим проблемы. Наконец-то у нас порядок с API

dyuvzhenko commented 6 years ago

@dhilt Добавил toUpperCase: https://github.com/dhilt/dharmadict/commit/973df8d01e6fed81b383b46ae33ab383252c02e5.