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

Я запустил проект при весенней загрузке, используя оставшийся веб-сервис, когда я поделился им со своей командой, они написали несколько комментариев:

  • get метод долженбыть сгруппированным Пример: get/users & get/users/{id} will be get/users/{id}

  • удалить положить метод и просто использовать post Пример: post/users/0 add | post/users/{id} update

  • создайте вспомогательный класс для шаблона Jdbc и вызовите его в классах репозитория для централизации кода

pls, ребята, помогитея, чтобы решить это, я так запутался, и спасибо

1 Ответ

0 голосов
/ 08 октября 2018

метод get нужно сгруппировать. Например: get / users & get / users / {id} будет get / users / {id}

Я не согласен с этим./get/users будет возвращать List<User> и get/users/{id} вернет User, что соответствует {id}


удалить метод put и просто использовать post Ex: post / users / 0добавить |post / users / {id} update

Пост должен использоваться при создании нового ресурса.ПОСТ не идемпотент.Каждый раз, когда вы вызываете сообщение, будет создан новый ресурс.например, вызов POST / Users будет создавать нового пользователя каждый раз.

PUT для других рук работает как upsert.Создать, если ресурс отсутствует, и обновить / заменить, если он есть.Put является идемпотентом и не меняет состояние ресурса, даже если он вызывается несколько раз.


создайте вспомогательный класс для Jdbc Template и вызовите его в классах репозитория для централизации кода

Вспомогательные классы помогают разделить проблемы и достичь единой ответственности,

Однако JdbcTemplate - это готовая к использованию абстракция JDBC.Я не вижу смысла в создании Помощника.Вы можете создать DataAccessObject (DAO) или репозиторий, который has-a JdbcTemplate.Как и два Dao, показанные ниже

public class UserDao {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    public User findUserById(String id){}

    public void addUser(User user){} 
}

//    -------
public class BooksDao{
    @Autowired
    private JdbcTemplate jdbcTemplate;

    public List<Book> getAllBooksByType(String type){}

    public void Book getBookByName(String name){} 
}

Теперь, ваши объекты Dao могут вызываться из контроллера или, если вам нужно изменить данные до / после работы с БД, лучше всего иметь служебный уровень между контроллером и Dao.

Не беспокойтесь о рекомендациях или правилах.Придерживайтесь основных концепций OOPS.Это действительно легко понять и реализовать.

Всегда:

  1. Инкапсулируйте переменные данных и методы, работающие над этими переменными вместе

  2. Убедитесь, что ваш класс имеет единую ответственность

  3. Напишите меньшие и тестируемые методы (если вы не можете написать тесты для вашего метода, значит, что-то не так с вашим методом)

  4. Всегда держите проблемы отдельно

  5. Убедитесь, что ваши объекты слабо связаны.(Вы уже используете пружину, поэтому просто используйте автоматическое подключение пружины)

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