java - 如何绕过 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。
我们遇到的问题是我们无法发布。
解决方案
在 post 请求中,json 数据应仅包含实体参数,不包含实体名称作为根键。因此,您的发布请求应如下所示:
{
"name" : "AdminRole"
}
推荐阅读
- python - python3:logging.basicConfig 将所有内容发送到 stderr?
- typescript - 使用声明命名空间覆盖 node_modules 包的类型
- mlab - Mayavi mlab 故障 - 渲染不会在旋转时更新
- osgi - 如何使用 bnd-maven-plugin 嵌入 maven 依赖项
- javascript - 使用基于类实例类型的模板
- matplotlib - Matplotlib:如何使等方面永久化
- agda - `with fx` 匹配 `false`,但不能构造 `fx == false`
- reactjs - 异步选择反应不加载选项
- compiler-construction - LR(1) 表结构混乱
- sql-server - 更改数据库服务器上现有 SQL 用户的登录名(Windows 用户)