【问题标题】:spring boot rest webservice, how to improve a clean code?spring boot rest webservice,如何改进干净的代码?
【发布时间】:2019-03-12 14:17:03
【问题描述】:

我在 Spring Boot 上使用了一个 Web 服务启动了一个项目,当我在我的团队之间共享它时,他们放了一些 cmets:

  • get方法需要分组例如:get/users & get/users/{id} will be get/users/{id}

  • 删除 put 方法,只使用 post Ex: post/users/0 add | post/users/{id} update

  • 为 Jdbc 模板创建一个帮助类并在存储库类中调用它以集中代码

请大家帮我解决这个问题,我很困惑,谢谢

【问题讨论】:

    标签: spring rest web-services spring-mvc spring-boot


    【解决方案1】:

    get 方法需要分组 Ex : get/users & get/users/{id} 将是 获取/用户/{id}

    我不同意这一点。 /get/users 将返回 List<User>get/users/{id} 将返回与 {id} 匹配的 User


    删除 put 方法并仅使用 post 示例:post/users/0 add | 发布/用户/{id} 更新

    创建新资源时应使用 Post。 POST 不是幂等的。每次您调用帖子时,都会创建一个新资源。 例如每次调用 POST /Users 都会创建一个新用户。

    PUT 在其他手上的工作方式类似于 upsert。如果资源不存在则创建,如果存在则更新/替换。 Put 是幂等的,即使被多次调用也不会改变资源的状态。


    为 Jdbc 模板创建一个帮助类并在存储库中调用它 类来集中代码

    Helper 类有助于分离关注点并实现单一职责。

    然而,JdbcTemplate 是一个随时可用的 JDBC 抽象。我认为创建 Helper 没有任何意义。您可以创建 has-a JdbcTemplate 的 DataAccessObject (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 对象可以从 Controller 调用,或者如果您需要在 DB 操作之前/之后修改数据,最好在 Controller 和 Dao 之间有一个 Service 层。

    不要太在意建议或规则。坚持基本的 OOPS 概念。这些真的很容易理解和实施。

    总是:

    1. 将数据变量和处理这些变量的方法封装在一起

    2. 确保您的班级有单一职责

    3. 编写更小且可测试的方法(如果您无法编写测试来覆盖您的方法,那么您的方法有问题)

    4. 始终将关注点分开

    5. 确保您的对象松散耦合。 (您已经在使用弹簧,所以只需使用弹簧的自动接线)

    【讨论】:

    • 感谢您的帮助!!还有一个问题^^!!关于 JdbcTemplate 它被认为是一个帮助类或类似的东西吗?
    • @Djamelkr 正如我在最后一点提到的,我需要了解更多关于您的对象结构以及您是否使用任何 ORM 框架
    • 不,我只是使用 spring 的 jdbcTemplate ,没有 ORM ,只是使用 jdbctemplate 进行简单调用!
    • @Djamelkr 我在最后一点添加了细节。如果您仍有疑问,请查看并告诉我
    • @AmitPhaltankar 非常清楚,非常感谢 ^^ !!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    • 1970-01-01
    相关资源
    最近更新 更多