如何设计一种提供两种不同口味的一种或多种资源的工序?

时间:2019-03-15 17:19:03

标签: rest asp.net-web-api asp.net-core api-design

该工序有望为特定产品提供报价。有两个输入变量,它们定义了返回的报价对象。从语义上讲,将其作为GET请求提供是有意义的。

GET host/api/v1/.../quotes/{variableA}/{variableB}

这将返回(变量A,变量B)元组的引用对象。 现在,我还有两个要求:

  1. 该操作应该能够接收多个输入元组。我希望能够提供最多6个项目的报价,所有报价均由上述元组描述。

  2. 该操作应可以选择省略报价的某些详细信息。我不知道为这种资源过滤创建一个新的端点是否是最佳实践,还是不希望使用其他技术。

在我的简单方法中,我将根据需求1切换到POST请求:

POST host/api/v1/.../quotes
{
    "items":
    [
        {
            "variableA": "someValue",
            "variableB": someValue
        },
        {
            "variableA": "someValue",
            "variableB": someValue
        }
    ]
}

我的问题是:

  1. 如果用户希望多次检索相同的资源,那么我从GET切换到POST方法的事实有多令人困惑?如果可以通过ID识别引号,则可以使用GET,但是元组会使它很长。最佳做法是什么?

  2. 我如何提供单个资源或多个资源的过滤版本?不同的端点?过滤器标签?

我对API设计非常陌生,之前曾犯过一些耗时的错误,因此感谢您的投入。

0 个答案:

没有答案