我应该使用自定义HTTP方法进行维护吗?

我应该使用自定义HTTP方法进行维护吗?,http,rest,http-method,Http,Rest,Http Method,目前我正在开发一个包含RESTful Web服务的CMS。对于常规的REST操作,我使用默认的HTTP方法GET、PUT、POST和DELETE。然而,我正在考虑添加一个自定义方法维护,我可以将其用于维护目的,如完整性检查、重新索引等。此类维护只能由CMS的管理员调用 My webservice支持通过定义url参数\u方法覆盖HTTP方法。这样我就可以“发布”表单,将_方法设置为PUT。我也可以使用相同的参数将方法设置为MAINTENANCE。从技术上讲,实现自定义HTTP方法相当容易 我的问

目前我正在开发一个包含RESTful Web服务的CMS。对于常规的REST操作,我使用默认的HTTP方法GET、PUT、POST和DELETE。然而,我正在考虑添加一个自定义方法维护,我可以将其用于维护目的,如完整性检查、重新索引等。此类维护只能由CMS的管理员调用

My webservice支持通过定义url参数\u方法覆盖HTTP方法。这样我就可以“发布”表单,将_方法设置为PUT。我也可以使用相同的参数将方法设置为MAINTENANCE。从技术上讲,实现自定义HTTP方法相当容易

我的问题是关于正确设计的伦理问题。一方面,自定义HTTP方法是允许的,并且在技术上不难实现。另一方面,有些人建议不要使用自定义HTTP方法


我应该为维护任务使用自定义HTTP方法吗?或者还有其他最佳做法吗?

完整性检查和重新索引不是您要向用户公开的资源操作。这些可以通过一个非REST的不同servlet来实现


向HTTP添加更多方法不是正常做法。您可以查看一些公共的REST接口

这是一个设计问题,不是道德问题!我不清楚您的维护用例是什么。它们是按资源分配的吗?为什么不建立一个资源模型来维护资源,并在这些资源上执行正常的GET/PUT等操作呢?你是对的,这不是关于道德,而是关于设计的好坏。一个用例是我有一个搜索索引。有时我想重新索引所有文档。但我希望我将来也要做一些数据完整性检查。或者一些聚合任务。我想有一个每资源维护,以及一个主维护,基本上称为所有每资源维护。我想我应该有一个/maintenance/check,maintenance/index子资源-可以让你在顶层索引所有东西/maintenance/index或一组特定的资源…不管是什么资源/maintenance/index?您可能会遇到代理/应用程序问题。防火墙和调试工具不知道它们,等等