Apikit - 状态码最佳实践

Apikit - status code best practices

在 Mule 中使用 APIKit,如果在执行流程时未找到特定资源,我需要 return 一个 404 状态码。

我可以看到三种处理方法:

  1. 抛出自定义业务异常(使用 groovy 脚本)即 PersonNotFoundException 并使用 apikit:mapping-exception-strategy 将该异常映射到“404”

  2. 抛出现有的Mule异常 org.mule.module.apikit.exception.NotFoundException 这已经是 映射到“404”

  3. 不要抛出异常,手动设置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 等中)。

但其他人可能不同意我的看法,自己手动设置状态代码和响应确实提供了最大的灵活性,但也允许不一致。