【问题标题】:Apiary.io - multiple responses (200) with different parametersApiary.io - 具有不同参数的多个响应(200)
【发布时间】:2015-06-18 09:37:38
【问题描述】:

我试图通过不同的参数获得不同的响应,但有些东西不起作用。

这是我的 API:

## Question [/questions/{question_id}]

A Question object has the following attributes:

+ Parameters
    + question_id: `1` (number, required) - ID of the Question in form of an integer

### View a Questions Detail [GET]

+ Request

+ Header

    X-Custom-Header : 1

+ Response 200 (application/json)

        {
            "id": "1",
            "name": "Marco"
        }


+ Request

+ Header

    X-Custom-Header : 2

+ Response 200 (application/json)

        {
            "id: "2",
            "name": "Lucas"
        }

但是当调用 /questions/1 或 /questions/2 时,响应总是相同的:

{
    "id": "1",
    "name": "Marco"
}

怎么了?

谢谢

【问题讨论】:

    标签: rest restful-architecture apiblueprint apiary.io apiary


    【解决方案1】:

    您的蓝图没有任何问题。恐怕 Apiary Mock 相当简单,并且总是默认返回指定的第一个响应(内容协商允许)。

    请参阅 Apiary http://support.apiary.io/knowledgebase/articles/117119-handling-multiple-actions-on-a-single-resource 的“调用非默认响应”以了解如何调用(按需)另一个响应。

    另请注意,API 蓝图中有一个建议的语法来明确说明哪些参数值与特定响应相关联 – https://github.com/apiaryio/api-blueprint/issues/58

    但是,目前尚不清楚 Apiary 的 mock 是否会利用这一点。

    【讨论】:

    • 感谢 Zdenek 的回复。即使阅读“调用非默认响应”,我仍然无法理解如何实现我的 API。你能提供一个例子吗?我相信有不少人在寻找这个例子。
    • 调用非默认响应的唯一方法是使用不同的代码和响应类型,因此我认为不可能返回两个响应代码为 200 并键入 application/json 的响应,对吗?
    • 重要的是要了解 Apiary 不提供 API 的实现。它只为您提供了一个用于原型设计的模拟服务器。实现完全取决于您(尽管您可以并且应该使用 Dred 等工具对其进行测试)。
    • 在 API Blueprint 中——API 的描述——你可以有尽可能多的响应,包括相同的状态码。对于相同的雕像,规则是请求必须不同。但是,如果没有使用首选 HTTP 标头明确询问,Apiary 模拟将只返回第一个。
    • 谢谢。我真的相信这个网址应该更清楚:support.apiary.io/knowledgebase/articles/…
    【解决方案2】:

    我相信有一个简单的解决方案可以在不使用标题的情况下做到这一点:

    创建不同的资源(每条记录一个),因此每个资源都会生成一个 URL。

    ## Note20 [/notes/20]
    
    ### Get notes20 [GET]
    
    + Response 200 (application/json)
    
            {
                "id" : 20,
                "name" : "note xxxx"
            } 
    
    ## Note21 [/notes/21]
    
    ### Get notes21 [GET]
    
    + Response 200 (application/json)
    
            {
                "id" : 21,
                "name" : "note yyyyy"
            } 
    

    【讨论】:

    • 是的,如果您不介意文档中有多个相似的资源,这将起作用
    猜你喜欢
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多