2017-05-31 210 views
3

我想实现一个REST端点,其通用目的是验证JSON格式的复杂实体。JSON验证的正确名称和http方法REST端点

因此,第一个问题是应该使用哪种HTTP方法?我们不能将GET方法放入正文中。 POST和PUT是在对数据库进行某些更改时应使用的方法,但验证不会做任何更改。

而第二个问题是什么资源名称可以适合这样的端点?

回答

2

POST和PUT之间的主要区别在于PUT是幂等而POST不是。

所以,问题是,如果你运行两次相同的验证请求,你会期望有不同的结果吗?我猜不,所以PUT可能是最好的选择。

我想要有效地使用RESTful,其中一个约束是端点应该定位您想要处理的资源,HTTP方法指示您想要处理的资源。所以你的情况,我会亲自选择:

PUT /api/v42/validation 

由于@RomanVottner建议,你也可以通过考虑每个请求为“新的验证报告生成”解决这一需求,在这种情况下,POST会更合适:

POST /api/v42/validations 

无论如何,你面对的这些边缘情况下,REST需要有点扭捏一个,因为这需要的是CRUD世界之外。

+2

我会选择'POST',因为操作的语义是由API开发人员定义的。 'PUT'的语义是:“用请求发送的主体替换给定资源当前可用的状态”。作为验证服务显然不能取代当前状态,'POST'可能更适合。一般来说,HTTP的瑞士军刀“POST”它可以用来启动进程而无需创建实际的资源,尽管它的用例通常局限于典型的创建操作,但会将REST的意图与CRUD操作相混淆。 –

+0

@RomanVottner您提出了一些要点,'POST/api/v42/validations'也可以很好地满足OP的需求,就好像每次都会生成一个新的验证报告。 OP会遇到其中一个REST需要稍微调整的边缘情况;) – sp00m