Apikit - 状态码最佳实践
Apikit - status code best practices
在 Mule 中使用 APIKit,如果在执行流程时未找到特定资源,我需要 return 一个 404 状态码。
我可以看到三种处理方法:
抛出自定义业务异常(使用 groovy 脚本)即
PersonNotFoundException 并使用
apikit:mapping-exception-strategy 将该异常映射到“404”
抛出现有的Mule异常
org.mule.module.apikit.exception.NotFoundException 这已经是
映射到“404”
不要抛出异常,手动设置http响应和
正常消息流中的状态代码。
此处的最佳做法是什么?使用异常进行流量控制?如果是,使用 Mule 异常或自定义业务异常?
我认为这是 API 最佳实践和 Mule 最佳实践之间的奇怪组合之一。
对于通用资源,即“/users”,我会使用 Mule Not Found Exception (404),但对于不存在的项目资源,即“/users/jim-smith”,出于可用性目的,我会抛出"The user requested does not exist" 或 "You do not have permission to access this user"(状态 401)的自定义异常,以最好地帮助开发人员利用您的 API.
我认为异常策略的最大优势在于它创建了一个清晰的流程,您可以轻松确定什么是成功响应,什么是失败响应。
在 Mule 中使用异常处理程序,您可以 return 向用户返回统一的错误响应(在 JSON、XML 等中)。
但其他人可能不同意我的看法,自己手动设置状态代码和响应确实提供了最大的灵活性,但也允许不一致。
在 Mule 中使用 APIKit,如果在执行流程时未找到特定资源,我需要 return 一个 404 状态码。
我可以看到三种处理方法:
抛出自定义业务异常(使用 groovy 脚本)即 PersonNotFoundException 并使用 apikit:mapping-exception-strategy 将该异常映射到“404”
抛出现有的Mule异常 org.mule.module.apikit.exception.NotFoundException 这已经是 映射到“404”
不要抛出异常,手动设置http响应和 正常消息流中的状态代码。
此处的最佳做法是什么?使用异常进行流量控制?如果是,使用 Mule 异常或自定义业务异常?
我认为这是 API 最佳实践和 Mule 最佳实践之间的奇怪组合之一。
对于通用资源,即“/users”,我会使用 Mule Not Found Exception (404),但对于不存在的项目资源,即“/users/jim-smith”,出于可用性目的,我会抛出"The user requested does not exist" 或 "You do not have permission to access this user"(状态 401)的自定义异常,以最好地帮助开发人员利用您的 API.
我认为异常策略的最大优势在于它创建了一个清晰的流程,您可以轻松确定什么是成功响应,什么是失败响应。
在 Mule 中使用异常处理程序,您可以 return 向用户返回统一的错误响应(在 JSON、XML 等中)。
但其他人可能不同意我的看法,自己手动设置状态代码和响应确实提供了最大的灵活性,但也允许不一致。