策略选择在服务器端失败时将使用什么正确的HTTP状态代码?

问题描述

考虑服务器端过程以实现算法以及用于对提供的输入数据执行算法的API端点。

解决这个问题,请设想请求内容描述了两个地方之间的旅行,并且服务器端算法用于计算完成旅行所需的时间。还要想象一下,存在许多算法可以计算出行车时间,并且算法选择在某种程度上基于请求内容调用API端点的客户端可以指定他不想使用收费公路,或者他想使用收费公路。最不繁忙的路)。

通常使用strategy pattern 的一种变体对这种情况进行编码。

现在的图片是API客户端指定他要使用风景最美的路线,并且我们的服务器端实现不包含用于此请求的算法(也许唯一可用的算法是“避免收费公路”,“最不繁忙的道路”和“最短的道路”)。在这种情况下,服务器将无法处理用户请求,并且必须向客户端返回某种错误状态代码

我应该认为服务器无法处理请求,因此返回5XX状态代码,或者客户端请求包含无效参数,因此返回4XX状态代码

采用另一种方式,是服务器由于服务器端问题而无法处理请求,还是客户端向服务器发送无效/格式错误的请求?

解决方法

提及

我们的服务器端实现不包括用于此请求的算法

将API与现有的“算法”结合使用是客户的责任。
据我对您的问题的了解,客户端没有显式发送诸如?algorithm=ASTAR之类的参数。 仅剩下两种可能性:

  • 服务器确实了解该请求,但无法处理该请求。 ?tollRoads=false是有效参数
    • 是否有备用广告?您可以重定向到任何其他算法吗?
      • 是=> 300,您可以将用户重定向到其他URL
      • 否=> 204 / 501是有效请求,但服务器无法处理
  • 这不是有效的参数=> 400用户不应发送此类参数