为什么RAML响应中需要多个状态代码?

时间:2018-02-05 16:42:06

标签: rest asp.net-web-api raml

在定义RAML时,在响应正文中,我们将根据状态代码(如200,400等)定义响应。 为什么需要单独定义?

 sample RAML
responses: 
        200:
            body:
                type: User
        400:
            body:
                type: ErrorMessage

从控制器我可以像

一样发送
  response = Request.CreateResponse(HttpStatusCode.Ambiguous, error);

这会将响应创建为300状态。

在击中Postman的api时,我能够获得状态为300的响应。

那么真的需要为不同的状态代码定义响应吗?

2 个答案:

答案 0 :(得分:0)

我认为你误解了RAML是什么。

RAML正在记录您的API,但它没有实现您的API。所以是的,您可以拥有一个与RAML指定的实现不同的实现。

  

是否真的需要为不同的状态代码定义响应?

不,在RAML中整个responses is optional。所以你可以把它留下来。

但是我们的想法是你尽可能地将RAML指定为尽可能接近,所以它对你和其他人都很有用。

  

在定义RAML时,在响应正文中我们将基于定义响应   状态代码如200,400等。为什么单独定义是   需要?

不同的状态代码通常表示不同的响应数据。

例如,如果您通过id (/ dogs / 1)获得一只狗,那么如果找到了狗,您将返回状态代码 200 ,并且正文将包含关于狗的数据。例如{ name: "foo", colour: "brown", ...}

另一方面,如果没有id为1的狗,那么您将返回状态代码 404 ,并在正文中返回:{ message: "a dog with id 1 was not found" }

答案 1 :(得分:0)

  

是否真的需要为不同的状态代码定义响应?

RAML是一种生成文档和客户端的方法。当然,你可以证明你将返回一个X体并实际返回Y体,但所有这些都会让消费者烦恼。

因此,您可以为所有响应代码返回相同的响应类型,或者在响应类型因响应代码而异的情况下进行记录。