我使用其余的Web服务在春季启动时启动了一个项目,当我在团队之间共享时,他们发表了一些评论:
获取方法需要分组 Ex: get/users & get/users/{id} will be get/users/{id}
删除 put 方法并仅使用 post Ex: post/users/0 add | post/users/{id} update
请大家帮我解决这个问题,我很困惑,谢谢
答案 0 :(得分:3)
get方法需要分组,例如:get / users和get / users / {id}将是 获取/用户/ {id}
我不同意这一点。 /get/users
将返回List<User>
,而get/users/{id}
将返回与{id}匹配的User
创建新资源时应使用删除put方法并仅使用post ex: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){}
}
现在,可以从Controller调用Dao对象,或者如果需要在DB操作之前/之后修改数据,最好在Controller和Dao之间建立一个Service层。
不要对建议或规则太在意。坚持基本的OOPS概念。这些真的很容易理解和实施。
总是:
将数据变量和处理这些变量的方法封装在一起
确保您的课程具有单一职责
编写较小且可测试的方法(如果您无法编写测试来覆盖您的方法,则您的方法有问题)
始终将关注点分开
确保您的对象松散耦合。 (您已经在使用spring,所以只需使用spring的自动接线)