[英]How to return fields in Spring Boot that is not present in the model?
[英]Return only specific fields of model from api in spring boot
我正在编写一个 spring boot api,它从数据库中获取一些数据,存储在模型对象中并返回它。 但我只想返回模型的几个字段作为 api 响应。
List<MyModel> myModelList = new ArrayList<>();
mongoUserCollection.find().into(myModelList);
class MyModel{
public int id;
public String name;
public String lastname;
public int age;
// getter & setter of all properties
}
我正在显示 myModelList 作为响应。 作为回应,它显示了所有字段。 如何仅显示特定字段,例如 id 和 age 。 仅从 db 中选择 id 和 age 仍将显示模型的所有字段作为响应(姓名和姓氏将显示为空)。 除了创建新的 ModelView 类或将 JsonIgnore 设置为这个模型之外,还有什么办法吗?
如果您返回的模型将特定于单个 API,请使用@JsonIgnore
,下面的示例将忽略响应中的id
class MyModel{
@JsonIgnore
public int id;
public String name;
public String lastname;
public int age;
}
但是假设相同的模型将用于不同的 API,并且每个 API 具有不同类型的结果,那么我强烈推荐@JsonView
来处理这些。 下面是一个简单的示例(将从您的问题中考虑MyModel
)
创建一个带有空接口的类Views.java
public class Views {
public interface MyResponseViews {};
}
在模型中
class MyModel{
public int id;
@JsonView(Views.MyResponseViews.class)
public String name;
@JsonView(Views.MyResponseViews.class)
public String lastname;
public int age;
}
您必须添加到发送此响应的控制器的最后一件事(假设您的控制器在这里)
我的模型控制器.java
class MyModelController {
// Autowiring MyModelService ...
@GetMapping("/get")
@JsonView(Views.MyResponseViews.class)
public ResponseEntity get() {
// Your logic to return the result
}
}
上面的代码将只返回name
和lastname
请参阅本作更详细的这
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.