繁体   English   中英

在spring boot中仅从api返回模型的特定字段

[英]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
   }

}

上面的代码将只返回namelastname请参阅本作更详细的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM