用于返回单个项目和项目集合的媒体类型

时间:2014-03-12 20:26:40

标签: api rest media-type http-accept-header

我正在开发用于返回单个产品或产品集合的API,因此会有http://api.company.com/products/http://api.company.com/products/1/等端点返回以下结构中的数据:

// http://api.company.com/products/1/
{
    Id: 1
    Name: "Product 1"
}

// http://api.company.com/products/
[
    {
        Id: 1,
        Name: "Product 1"
    },
    {
        Id: 2,
        Name: "Product 2"
    }
]

我目前分别在Accept标头中使用以下媒体类型:

application/vnd.company.product-v1.0+json // single product
application/vnd.company.products-v1.0+json // collection of products

现在看来,使用"product""products"两种媒体类型似乎并不理想,因为我可以看到它会导致一些混乱,但它们会返回不同的数据结构。所以我想知道这里是否有任何API标准规定你是否应该只使用一种媒体类型?

1 个答案:

答案 0 :(得分:0)

我没有指向“REST API标准”的链接,该链接指示您建议的内容是否可接受。但是,在我必须处理的许多REST API中,我没有看到像你提议的那样使用了接受标头的那个。

如果您稍后允许GET /产品上的标记包含有关产品的不同级别的详细信息,会发生什么?您需要不同的Accept标头值(示例application / vnd.company.products-details-v1.0 + json vs application / vnd.company.products-min-v1.0 + json)

我相信只用一个Accept标头值就可以了。