我对REST有一个设计问题。我需要将validate方法公开为rest资源。让我们说它看起来像这样
public ValidatedResult validate(ObjectToBeValidated object)
ObjectToBeValidated
是一个包含实际Object
的类,还包含有关验证的一些参数。
当我将其设计为Restful资源时,我会使用哪种操作?根据我的理解,GET是最适合这种情况的动作。如果是这样,我如何将ObjectTobeValidated
作为对象传递而不是作为URL参数传递?我回避了URL参数,因为ObjectToBeValidated
可能包含很多属性,最后会有一个像下面这样感觉太长的网址
http://localhost/rest/validate?prop1=somevalu&prop2=somevalue&prop3=something&prop11=somevalu&prop22=somevalue&prop33=something
任何帮助将不胜感激
由于 凯
答案 0 :(得分:1)
HTTP标准允许您使用POST方法。没有必要产生副作用。
POST方法执行的操作可能不会产生资源 可以通过URI识别。在这种情况下,200(OK)或204 (No Content)是适当的响应状态,具体取决于是否 或不响应包括描述结果的实体。
在你的情况下,如果你想遵循Tim建议的名词 - 动词方法,你可以做这样的事情:
POST /api/my/object/validator
请注意,通过REST,邮件必须是自描述的,因此您需要供应商MIME类型,或者需要添加元数据,例如RDF描述此链接的作用以及允许的参数。否则,我们不是在谈论REST,只是一个常规的webapp。