[英]What is the proper way to design a REST API that takes a boolean argument?
基本上我有这样的休息API:
/api/drive
PUT
需要一个“真”或“假”的主体。
我正在使用带有Java的dropwizard框架,而boolean drive
是我资源类的PUT
方法中的一个参数。
一切都按预期工作,但我在Postman上进行测试,即使我在请求体中添加了像“notABoolean”这样的另一个值,请求本身仍然是成功的。 它只是把它当作“假”。 这是否符合REST原则,或者如果正文不是真/假,则抛出400 BAD REQUEST
错误会更有意义吗?
这是否符合REST原则,或者如果正文不是真/假,则抛出400 BAD REQUEST错误会更有意义吗?
“这取决于”。
notABoolean
这是一个非常合理的text/plain
文档,但它不是一个有效的application / json文档。
正如Mike所指出的, Boolean.valueOf("notABoolean")
具有明确定义的值; 如果您以明确限制此案例的方式描述了您的API,那么您将获得所获得的内容。
至少有三种可能的状态代码可以处理这种情况。
422无法处理的实体是你似乎期待的 - 它大致转化为“是的,数据就是你所说的,但这在这里没有任何意义”。
如果你要描述你的API,只有application/json
是合理的,那么这个测试可能会产生415 Unsupported Media Type (因为客户端发送text/plain
)或400 Bad Request (因为notABoolean
不是有效的JSON值) )。
当然,字符串是有效的json值,因此下面的有效负载可能会使您处于同一个修复程序中
"notABoolean"
这是一种可接受的类型,它是有效的,但你回到422列车上。
要让DropWizard“免费”为您返回422,请查看有关验证的文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.