无CRUD操作的REST API应选用何种HTTP请求方法?
机器学习推理场景的HTTP方法选择
这种场景属于计算/推理类操作,不用硬套传统REST以资源为核心的CRUD规则,下面直接分析可选方案:
排除GET的原因:虽然GET适合查询类操作,但HTTP规范里并没有强制要求服务器支持GET请求体,很多客户端、网关或代理会直接忽略GET的请求体,用它传复杂JSON会有兼容性问题,所以直接排除。
POST是最优选择:别被“POST只能创建资源”的刻板印象限制,HTTP规范里POST的定义是「将请求体提交给指定资源,服务器根据自身逻辑处理该实体」,完全没限定必须创建资源。在这个推理场景下用POST的好处:
- 所有客户端和中间件都支持POST传递复杂JSON请求体,兼容性拉满;
- 哪怕你的推理操作是幂等的(相同输入返回相同概率),也不影响用POST——幂等性是GET、PUT的特性,但不是POST的禁用条件;
- 语义上,POST刚好对应「触发一次处理动作」的需求,完全匹配机器学习模型推理的场景。
其他方法为什么不合适:PUT语义是替换/创建指定资源,PATCH是部分更新资源,DELETE是删除资源,这些都和“输入数据做计算返回结果”的场景不沾边,不用考虑。
举个实际的端点设计例子:POST /api/model/predict,请求体传包含特征的JSON,响应体直接返回计算后的概率值即可。
内容的提问来源于stack exchange,提问作者lazcuenqui
相关产品推荐
相关产品推荐

