簡體   English   中英

Spring MVC:RequestBody + ResponseEntity:如何在沒有某些obj字段的情況下返回對象/實體

[英]Spring MVC: RequestBody + ResponseEntity: How to return an object/entity without some of the obj fields

我想看看有沒有更好的方法可以實現此目的:目前,我有一個User類,UserRequest類和UserResponse類,它們都非常相似或是User的子集。

class User{
 long id;
 String name;
 String password;
 String field1;
 String[] array1;
}

class UserRequest{
 String name;
 String password;
}

class UserResponse{
 long id;
 String name;
 String field1;
}

因此,除了可以使用3個類似的類之外,我還可以將User類用於ResponseEntity來限制字段嗎? 還是在沒有所有類似課程的情況下實現我正在嘗試的更好的方法是什么?

 public @ResponseBody ResponseEntity<UserResponse> login(@RequestBody @Valid UserRequest request) {

  User user = userRep.findByPrimaryEmailLike(request.getPrimaryEmail());
  return new ResponseEntity<UserResponse>(user.getSuccessLoginResponse(), HttpHeaderUtils.getHeader4Json(), HttpStatus.OK);

 }

取決於您的格式和(反)序列化處理程序是什么,但是通過Jackson可以大膽地猜測它是JSON:

import org.codehaus.jackson.annotate.JsonIgnore;
class User {

    long id;
    String name;
    String password;
    String field1;
    String[] array1;

    @JsonIgnore
    public String[] getArray1() {
        return array1;
    }

    @JsonIgnore
    public void setArray1(String[] array1) {
        this.array1 = array1;
    }

    public String getField1() {
        return field1;
    }

    @JsonIgnore
    public void setField1(String field1) {
        this.field1 = field1;
    }

    public long getId() {
        return id;
    }

    @JsonIgnore
    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @JsonIgnore
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}

如果使用延長用SpringMVC像瑜伽 ,你只能返回用戶對象,但定制確定哪些字段在被@ResponseBody返回的請求。 例如,

GET http://mydomain.com/user?selector=name,password

GET http://mydomain.com/user?selector=id,name,field1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM