小编Jac*_*ers的帖子

REST - 修改资源的一部分 - PUT或POST

我正在看到如何使用REST更新资源的一部分(例如状态指示器)的主题.

选项似乎是:

  1. 抱怨HTTP没有PATCH或MODIFY命令.但是,对于REST的HTTP MODIFY动词,接受的答案是什么?能很好地展示为什么这不像看起来那么好.

  2. 将POST与参数一起使用并识别方法(例如,名为"action"的参数).一些建议是使用自定义方法名称指定X-HTTP-Method-Override标头.这似乎导致了基于你正在尝试做的事情在实现中切换的丑陋,并且批评不是一种特别的REST方式来使用POST.事实上,采用这种方法开始感觉像RPC类型的接口.

  3. 使用PUT覆盖资源的子资源,该子资源表示要更新的特定属性.实际上,这实际上是对子资源的重写,这似乎符合PUT的精神.

在这一点上,我认为#3是最合理的选择.

这是最佳做法还是反模式?还有其他选择吗?

rest http http-verbs http-headers

16
推荐指数
3
解决办法
1万
查看次数

JAXB无法在名称中使用冒号(:)处理属性?

我试图使用JAXB来解组其模式由DTD定义的XML文件(呃!).

DTD的外部提供程序已将其中一个元素属性指定为xml:lang:

<!ATTLIST langSet
id ID #IMPLIED
xml:lang CDATA #REQUIRED
>
Run Code Online (Sandbox Code Playgroud)

这进入了xjc生成的类(标准生成;没有*.xjb魔术):

@XmlAttribute(name = "xml:lang", required = true)
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
protected String xmlLang;
Run Code Online (Sandbox Code Playgroud)

但是,当使用JAXB解组有效的XML文件时,该xmlLang属性始终是null.

当我编辑XML文件,替换xml:langlang,改变了@XmlAttribute相匹配,解组是成功的(即属性是不可null).

我没有找到这个http://old.nabble.com/unmarshalling-ignores-element-attribute-%27xml%27-td22558466.html.但是,解决方案是转换为XML Schema等.我强烈倾向于直接从未改变的DTD(因为它是外部提供并由ISO标准定义).

这是一个JAXB错误吗?我是否遗漏了属性名称中"命名空间"的内容?

FWIW,java -version="build 1.6.0_20-b02"和xjc -version="xjc version"JAXB 2.1.10 in JDK 6""

attributes dtd jaxb unmarshalling

7
推荐指数
1
解决办法
2889
查看次数

标签 统计

attributes ×1

dtd ×1

http ×1

http-headers ×1

http-verbs ×1

jaxb ×1

rest ×1

unmarshalling ×1