当前位置: 首页 > 知识库问答 >
问题:

使用Spring数据REST公开枚举

慕容博涛
2023-03-14

我使用的是Spring Boot1.5.3、Spring Data REST、Hateoas。我有一个简单的实体模型:

@Entity
public class User extends AbstractEntity implements UserDetails {
private static final long serialVersionUID = 5745401123028683585L;
public static final PasswordEncoder PASSWORD_ENCODER = new BCryptPasswordEncoder();
@NotNull(message = "The name of the user cannot be blank")
@Column(nullable = false)
private String name;

/** CONTACT INFORMATION **/
private String landlinePhone;

private String mobilePhone;

@NotNull(message = "The username cannot be blank")
@Column(nullable = false, unique = true)
private String username;

@Email(message = "The email address is not valid")
private String email;

@JsonIgnore
private String password;

@Column(nullable = false)
private String timeZone = "Europe/Rome";

@JsonIgnore
private LocalDateTime lastPasswordResetDate;

@Column(nullable = false, columnDefinition = "BOOLEAN default true")
private boolean enabled = true;

@Type(type = "json")
@Column(columnDefinition = "json")
private Roles[] roles = new Roles[] {};

我的枚举角色是:

public enum Roles {
ROLE_ADMIN, ROLE_USER, ROLE_MANAGER, ROLE_TECH;

@JsonCreator
public static Roles create(String value) {
    if (value == null) {
        throw new IllegalArgumentException();
    }
    for (Roles v : values()) {
        if (value.equals(v.toString())) {
            return v;
        }
    }
    throw new IllegalArgumentException();
}
}
    {
  "_embedded": {
    "users": [
      {
        "name": "Administrator",
        "username": "admin",
        "roles": [
          "Amministratore"
        ],
        "activeWorkSession": "",
        "_links": {
          "self": {
            "href": "http://localhost:8080/api/v1/users/1"
          },
          "user": {
            "href": "http://localhost:8080/api/v1/users/1{?projection}",
            "templated": true
          }
        }
      },
    null
@RepositoryRestController
@RequestMapping(path = "/api/v1")
@Autowired
private EntityLinks entityLinks;

@RequestMapping(method = RequestMethod.GET, path = "/users/roles", produces = "application/json")
public Resource<Roles> findRoles() {
    Resource<Roles> resource = new Resource<>(Roles.ROLE_ADMIN);
    return resource;
}

共有1个答案

宰父正真
2023-03-14

如何返回此列表?

@RepositoryRestController
@RequestMapping("/roles")
public class RoleController {

    @GetMapping
    public ResponseEntity<?> getAllRoles() {
        List<Resource<Roles>> content = new ArrayList<>();
        content.addAll(Arrays.asList(
                new Resource<>(Roles.ROLE1 /*, Optional Links */),
                new Resource<>(Roles.ROLE2 /*, Optional Links */)));
        return ResponseEntity.ok(new Resources<>(content /*, Optional Links */));
    }
}
 类似资料:
  • 问题内容: 使用REST接口公开MySQL数据库的最简单方法是什么? 我可以在Internet上找到的唯一指南只是使用NetBeans。我不是NetBeans的忠实拥护者… 我想检索该数据,并能够使用此REST接口更新数据库上的数据。 仅供参考,这是针对我当前正在使用的iPhone应用程序。 问题答案: 正如dorkitude所评论的那样,这取决于您可以使用/想要使用哪种语言。 我找到了项目PHP

  • 我正在尝试将HATEOAS与Spring HATEOAS一起使用,并且需要将s公开为带有Spring HATEOAS的REST API。 我尝试了以下三种方式: 但是我不知道哪个是HATEOAS的正确方法。任何建议或参考都将不胜感激。 作为参考,我有以下Spring Data REST配置: 请参见以下示例项目: https://github.com/izeye/spring-boot-throw

  • 问题内容: 我想使用Spring Rest界面公开所有ID。 我知道默认情况下,这样的ID不会通过rest接口公开: 我知道我可以使用它来公开ID : 但是,有没有一种简便的方法可以在不手动维护此列表的情况下公开所有ID ? 问题答案: 当前,SDR无法提供此功能。SDR Jira跟踪器上的此问题说明了为什么无法(也许不应该)的原因。 从根本上说,由于ID已包含在响应的链接中,因此您无需将ID 公

  • 我将spring数据rest与spring数据jpa结合使用,它以HAL JSON格式将我的所有spring数据jpa接口公开为rest资源。 我想以同样的方式公开我的@服务方法。这可能吗?如果没有,那么实现可能需要使用更复杂逻辑(JSON响应)的endpoint的最佳方法是什么?

  • 我的项目中有两个域对象,和。s分别与单个相关联。我正在使用Spring-Data-Rest,它是抽象,所以我有这个: 当我通过HTTP获取时,我会得到这个: 但是,我不能将相同的内容发回以首先创建文档。我发现最好的办法是发布以下内容: 然而,这似乎真的很奇怪,因为: a) 现在,我在对象中嵌入了一个未命名、未类型化的链接,这不是很HATEAOS(尽管Spring似乎正确地反序列化了它)。 b)我现