我想实现一个REST端点,其通用目的是验证JSON格式的复杂实体。
那么,第一个问题是应该使用哪种HTTP方法?我们不能将JSON放入GET方法体内。 POST和PUT是在对数据库进行一些更改时应该使用的方法,但验证不会进行任何更改。
第二个问题是什么资源名称适合这种端点?
答案 0 :(得分:2)
POST和PUT之间的主要区别在于,当POST不是时,PUT是幂等的。
所以,问题是,如果你两次运行相同的验证请求,你会期望得到不同的结果吗?我想不,所以PUT可能是最好的选择。
我想要有效地使用RESTful,其中一个约束是端点应该定位您想要处理的资源,HTTP方法指示您要对其执行的操作。所以在你的情况下,我个人会选择:
PUT /api/v42/validation
正如@RomanVottner所提议的那样,您也可以通过将每个请求视为"新的验证报告生成来解决这一需求,在这种情况下,POST会更合适:
POST /api/v42/validations
无论如何,你需要面对其中一个需要稍微调整REST的边缘情况,因为这需要在CRUD世界之外。
答案 1 :(得分:0)
我的一般规则是..当你需要一个完整的JSON主体时,请使用POST。
有一个像/ validateJSON之类的帖子方法,GET不起作用,PUT没有意义,所以请继续POST。
请参阅:Which REST operation (GET, PUT, or POST) for validating information?
干杯。