类型定义方法

时间:2017-01-06 10:21:55

标签: rest api raml

假设我有一个支持三种方法的端点:GET,POST和PUT。

将返回的类型包含两个属性:idname。两者都是required

我的问题是关于如何在RAML定义中定义此类型,因为在POST上,id应该自动创建,PUT id将是URI Types参数。你们是否创建了两个id(一个用于GET,另一个用于PUT,POST)或者对所有操作使用相同的类型,声明required不是cv::Mat depth(m_input.m_leftImg.size(), CV_32FC3, cv::Scalar::all(0)); int size = feOutput.m_leftKp.size(); for (int i = 0; i < size; i++) { cv::Point pt = cv::Point((int)(feOutput.m_leftKp.at(i).pt.x + 0.5f), (int)(feOutput.m_leftKp.at(i).pt.y + 0.5f)); depth.at<cv::Vec3f>(pt)[2] = fX * baseLine / (feOutput.m_leftKp.at(i).pt.x - feOutput.m_rightKp.at(i).pt.x); // Z depth.at<cv::Vec3f>(pt)[0] = (feOutput.m_leftKp.at(i).pt.x - cX) * depth.at<cv::Vec3f>(pt)[2] / fX; // X depth.at<cv::Vec3f>(pt)[1] = (feOutput.m_leftKp.at(i).pt.y - cY) * depth.at<cv::Vec3f>(pt)[2] / fY; // Y } depth /= 1000.f; //milli-meter to meter

很抱歉,如果这似乎是一个基本问题,但我搜索了这个并没有得到任何结论性的回复。

非常感谢!

1 个答案:

答案 0 :(得分:1)

也许您可以举例说明您希望它如何运作。另请指定您正在使用的RAML版本(现在假设为1.0)。

您的端点提供POST。这意味着您可以添加项目的某种集合。然后,您可以使用GET来检索此类项目。

  • 您可以为收藏品的项目创建第二个端点:您最终会得到/collection(所有商品)和/collection/12345678(仅限一个商品,特别是商品) ID 12345678)
  • 或者您可以使用查询字符串来过滤您的集合以查找特定项目:/collection?id=12345678(恰好包含一个项目而不是多个项目的集合的子集)

也许,你也可以考虑使用uriParameters

举例说明:

/types:
    myidtype:
        type: string
        pattern: ^[0-9]{8}$
/collection:
    get: # to retrieve the entire collection
        queryParameters: # to be able to filter the collection into a subset of 1 or more items
            id:
                type: myidtype
                required: false
            name:
                type: string
                required: false
    post: # to create a new item and add it to the collection, id and name will go in the body
    /{myId}: # this is one item
        uriParameters:
            myId:
                type: myidtype
        get: # to retrieve all information on this item
        post: # to post some property to this item

请注意我的例子并不完全正确。它是关于概念而不是精确的语法。