首页 > 解决方案 > 如何绕过 HTTP 错误 415 - 不支持的媒体类型

问题描述

我正在使用 Restet,我想知道是否设置了 ServerResource 实体类型是否可能,例如对于这种类型的实体:

@XStreamAlias("role")
@ApiModel
public class Role {

    private String entityId;
    private String name;

    @ApiModelProperty(required = false, value = "")
    private List<String> aclRead;
    @ApiModelProperty(required = false, value = "")
    private List<String> acLWrite;
    @ApiModelProperty(required = false, value = "")
    private Boolean publicRead;
    @ApiModelProperty(required = false, value = "")
    private Boolean publicWrite;

    public String getEntityId() {
        return entityId;
    }

    public void setEntityId(String entityId) {
        this.entityId = entityId;
    }

    public String getName() {
        return name;
    }

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

    public List<String> getAclRead() {
        return aclRead;
    }

    public void setAclRead(List<String> aclRead) {
        this.aclRead = aclRead;
    }

    public List<String> getAcLWrite() {
        return acLWrite;
    }

    public void setAcLWrite(List<String> acLWrite) {
        this.acLWrite = acLWrite;
    }

    public Boolean getPublicRead() {
        return publicRead;
    }

    public void setPublicRead(Boolean publicRead) {
        this.publicRead = publicRead;
    }

    public Boolean getPublicWrite() {
        return publicWrite;
    }

    public void setPublicWrite(Boolean publicWrite) {
        this.publicWrite = publicWrite;
    }

}

我们如何能够在不需要传递所有字段的情况下进行 POST,对于这个例子,我们只想从客户端请求中传递“名称”,但是这样做会抛出415 - Unsupported Media Type

在我们的客户端中,我们只传递这个 JSON

{
  "role" : {
     "name" : "AdminRole" 
  }
}

对于 Resource 的 Get 响应,返回类型也是 Role,因此客户端将通过 Restlet 编组获取所有字段 entityId、name、aclRead、aclWrite、publicRead 和 publicWrite。

我们遇到的问题是我们无法发布。

标签: javarestlet

解决方案


在 post 请求中,json 数据应仅包含实体参数,不包含实体名称作为根键。因此,您的发布请求应如下所示:

{
    "name" : "AdminRole" 
}

推荐阅读