spring boot rest webservice,如何改进干净的代码?
Posted
技术标签:
【中文标题】spring boot rest webservice,如何改进干净的代码?【英文标题】:spring boot rest webservice, how to improve a clean code? 【发布时间】: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
请大家帮我解决这个问题,我很困惑,谢谢
【问题讨论】:
【参考方案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 概念。这些真的很容易理解和实施。
总是:
将数据变量和处理这些变量的方法封装在一起
确保您的班级有单一职责
编写更小且可测试的方法(如果您无法编写测试来覆盖您的方法,那么您的方法有问题)
始终将关注点分开
确保您的对象松散耦合。 (您已经在使用弹簧,所以只需使用弹簧的自动接线)
【讨论】:
感谢您的帮助!!还有一个问题^^!!关于 JdbcTemplate 它被认为是一个帮助类或类似的东西吗? @Djamelkr 正如我在最后一点提到的,我需要了解更多关于您的对象结构以及您是否使用任何 ORM 框架 不,我只是使用 spring 的 jdbcTemplate ,没有 ORM ,只是使用 jdbctemplate 进行简单调用! @Djamelkr 我在最后一点添加了细节。如果您仍有疑问,请查看并告诉我 @AmitPhaltankar 非常清楚,非常感谢 ^^ !!以上是关于spring boot rest webservice,如何改进干净的代码?的主要内容,如果未能解决你的问题,请参考以下文章
spring-boot实战04:Spring Boot构建RESTful API
列出所有已部署的 REST 端点(spring-boot、tomcat)
初入spring boot(八 )Spring Data REST