首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wildfly 10管理Rest

Wildfly 10管理Rest
EN

Stack Overflow用户
提问于 2016-04-21 14:16:28
回答 1查看 1.4K关注 0票数 1

有人能解释下面的密码吗?

我知道RESTEasy客户和泽西AuthenticationFeature..。但是,这意味着SimpleOperation类以及它是什么API?

代码语言:javascript
复制
HttpAuthenticationFeature feature = HttpAuthenticationFeature.digest("admin", "admin");
Client client = ClientBuilder.newClient();
client.register(feature);
Entity<SimpleOperation> operation = Entity.entity(
    new SimpleOperation("read-resource", true, "subsystem", "undertow", "server", "default-server"),
    MediaType.APPLICATION_JSON_TYPE);
WebTarget managementResource = client.target("http://localhost:9990/management");
String response = managementResource.request(MediaType.APPLICATION_JSON_TYPE)
    .header("Content-type", MediaType.APPLICATION_JSON)
    .post(operation, String.class);
System.out.println(response);

来自:https://docs.jboss.org/author/display/WFLY10/The+HTTP+management+API

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-21 15:41:20

如果您无法了解SimpleOperation类是什么,或者它只是文档的一些组合类,那么您可以简单地创建自己的类。它只是JSON序列化程序用来序列化到JSON的一个简单的POJO。如果您不熟悉JSON/POJO映射,下面是一些技巧

  • JSON对象(通常)映射到Java类。所以{ }会映射到 类SomeClass
  • JSON属性映射到Java属性。例如,如果您有一个JSON属性firstName,那么您将需要一个带有getter和setter的字段,其中getter和setter匹配JSON属性的名称(带有get/set前缀和第一个字母大写) 类SomeClass {私有字符串firstName;公共字符串getFirstName() {返回firstName;}公共空setFirstName(String firstName) { this.firstName = firstName }} 因此,如果要将new SomeClass("Joao")作为实体发送,它将序列化为 {"firstName":"Joao"}

尽管如此,如果您知道您需要发送的JSON格式,那么创建您自己的POJO应该不会太困难。

其他一些类型映射:

  • JSON数组通常映射到List。因此,如果您有["hello", "world"],您可以将其映射到List<String>
  • 或者,如果有JSON对象的JSON数组,例如[{"prop":"value"}, {"prop":"value"}],则可以将其映射到List<SomeType>
  • 布尔java属性getter可以遵循更广泛的命名约定,即getPropertyisPropertyhasProperty

这就是我所能想到的最基本的东西。例如,查看您提供的链接中的一个示例请求。

代码语言:javascript
复制
{
  "operation":"read-resource", 
  "include-runtime":"true",
  "recursive":"true", 
  "address":["subsystem","undertow","server","default-server"]
}

你可以把它映射到POJO

代码语言:javascript
复制
public class SimpleOperation {
    private String operation;
    @JsonProperty("include-runtime")
    private boolean includeRuntime;
    public boolean recursive;
    private List<String> address;

    public SimpleOperation(String operation, boolean includeRuntime, 
                          boolean recursive, String... address) {
        this.operation = operation;
        this.includeRuntime = includeRuntime;
        this.address = Arrays.asList(address);
    }

    // getters and setters.
}

@JsonProperty使杰克逊序列化程序知道如何设置JSON属性名称。这将是默认的,不符合我前面提到的命名约定,但是它不知道在名称中使用-,所以我们明确地告诉它应该使用什么属性名。

那你就可以

代码语言:javascript
复制
new SimpleOperation("read-resource", true, "subsystem", "undertow", "server", "default-server")

它应该被序列化到上面的JSON

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36772354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档