我正在开发一个REST API,使用Spring Boot启动数据Rest。我想与JPA同步的一个类是User类,其中包含有关用户的信息,包括谁被允许访问API。
不幸的是,拥有用户和UserRepository意味着我的用户类在API中公开。我能够删除Id(在configureRepositoryRestConfiguration函数中)、用户名和密码(通过向我的用户类的每个变量添加@JsonIgnore)。
不幸的是,API的用户仍然可以请求用户表(返回一个空用户列表)。虽然这不是真正的问题,但我宁愿删除 /usersendpoint。
无法将@JsonIgnore添加到整个用户类中。
有投影这种东西。
您可以使用所需字段定义接口,并将其用作存储库的方法:
@Projection(name = "simpleUser", types = { User.class })
interface SimpleUser {
String getFirstName();
String getLastName();
}
您可以通过将此注释添加到存储库来隐藏某些存储库:@RepositoryRestResources(导出=false)
。
更多信息请点击此处:http://docs.spring.io/spring-data/rest/docs/current/reference/html/#customizing-特别提款权。隐藏存储库
导出存储库依赖于RepositoryDettionStrategy。默认策略是:
公开所有公共存储库接口,但考虑@(存储库)RestResources的导出的
标志。
根据禁用“回购”的导出,您可以为此回购设置exported
标志为false
:
@RepositoryRestResource(exported = false)
public interface UserRepo extends JpaRepository<User, Integer> {
//...
}
另一种方法是将RepositoryDetectionStrategy全局更改为带注释的:
只有使用@(Repository)RestResource注释的存储库才会公开,除非其导出标志设置为false。
@Configuration
public class RestConfig extends RepositoryRestConfigurerAdapter {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
config.setRepositoryDetectionStrategy(RepositoryDetectionStrategy.RepositoryDetectionStrategies.ANNOTATED);
super.configureRepositoryRestConfiguration(config);
}
}
然后不要将@RepositoryRestResource
注释应用于不需要导出的repos。
使现代化
我们还可以使用此应用程序属性设置策略:
spring.data.rest.detection-strategy=default
来源
问题内容: 我正在开发一个使用Spring-boot,关系数据库和Elasticsearch的应用程序。 我在代码的2个不同位置使用JSON序列化: 在REST API的响应中。 当代码与Elasticsearch交互时。 我在Elasticsearch中需要一些属性,但我想向应用程序用户隐藏(例如,来自关系数据库的内部ID)。 这是一个实体的例子: 问题 :当对象持久化在Elasticsearc
我构建了一个REST服务,发现使用Gson从ObjectId生成的JSON字符串的格式与Spring-Boot生成的格式不同。如果我以GSON格式将现有文档的_id字段的ObjectId发送到REST服务,并使用MongoRepository的save函数将其保存到集合中,即使在这样的字段上设置了唯一的索引,仍会插入具有duplicated_id的新文档。但是,如果我以spring-boot生成的
问题内容: 我正在某个网站上插入一些标题中的换行符。假设我无法编辑源HTML,是否有CSS可以忽略这些中断的方法? 我正在移动网站的优化,所以我真的不想使用JavaScript。 问题答案: 使用css,您可以“隐藏” br标签,它们不会起作用: 如果只想在特定的标题类型中隐藏某些内容,只需使CSS更具体即可。
我有一个实体: 存储库: 应引发异常的测试: 然而,测试失败。实体不会引发所需的异常。注释适用于字符串,但不适用于整数。 MyEntity的自动生成表: 更新 当我将 指定到 字段时,一切正常。但是,我希望能够将自己的值分配给主键字段。 更新2 更新的实体(存储库也已更新以反映更改): MyEntity的自动生成表:
问题内容: 这是我的实体: 这是我获得人员名单的方式: 如果我正确理解提取图,则它必须仅加载我指定的那些字段。但是,字段“ birthDate”也已加载。此外,我看到在hibernateSQL查询中选择了4列。 如何解决?我使用hibernate 5.1.0作为JPA提供程序。 问题答案: 实体图旨在控制延迟或渴望加载哪些关系(例如,一对一,一对多等)。它们可能不适用于加载各个列(取决于提供程序)
由于某些原因,我无法将CURL与HTTPS一起使用。在我升级curl库之前,一切都很正常。现在,我在尝试执行CURL请求时遇到了这种响应:SSL CA证书(路径?访问权限?)有问题 以下是关于相关问题的建议,我试图做到以下几点: > 启用并指向从http://curl.haxx.se/docs/caextract.html下载的cacert.pem 我也试着用positiveSSL做同样的事情。c