如果我在URL中指定API版本,我是否应该提供一个选项以将其包含在标题中?

时间:2017-01-11 20:51:38

标签: rest architecture versioning azure-api-apps apiary.io

我正在设计我的API,并在网址

中指定了可选的API版本
    cvNamedWindow("OpenCV", 0);
    while(true)
    {
        IplImage img = cvQueryFrame(cvCreateCameraCapture(0));
        CvScalar[] s = new CvScalar[img.height()*img.width()+2];
        for(int i = 0;i<=img.width();i++)
        {
            for(int j = 0;j<=img.height();j++)
            {
                s[j] = cvGet2D(img, i, j);
            }
        }
        cvShowImage("OpenCV", img);
        cvWaitKey(33);
    }

我是否也应该在HTTP标头中指定一个(为了灵活性)?

如果两种方法之间存在冲突,我该怎么办?

1 个答案:

答案 0 :(得分:1)

允许从2种不同的输入方法(querystring和Header)输入API版本没有明显的优势。但是,如果两者都由客户端指定,则这里的缺点是冲突解决。

无论是在标头还是在查询字符串中,都不应该指定API版本的正确或错误方式。但请记住,URL需要解析,而大多数是通过框架完成的,但仍然是您用来解析URL以从中提取值的计算资源。

我(个人)更喜欢简单地使用标头。此外,将URL保持为地址仅仅指向客户端的功能/意图感觉更清晰。