如何在REST服务中发送响应代码。?

如何在REST服务中发送响应代码。?,rest,axis,Rest,Axis,我正在开发RESTful服务来创建操作。在我的用例中,告诉客户事务是成功还是失败就足够了。如果失败,我们需要将错误代码发回 是否可以只发送这些信息而不发送xml响应或JSON响应。如果是,如何做 我们有5位现有的错误代码,我们不会改变这个api。如果这是不可能的 JSON响应会比XML响应更好吗。?我们正在接受XML请求。 正在征求您的意见。我假设此服务将通过HTTP调用,因为大多数人说“RESTful服务”就是这个意思 一般来说,大多数人将“创建”类型功能映射到POST方法(尽管您也可以使用P

我正在开发RESTful服务来创建操作。在我的用例中,告诉客户事务是成功还是失败就足够了。如果失败,我们需要将错误代码发回

是否可以只发送这些信息而不发送xml响应或JSON响应。如果是,如何做

我们有5位现有的错误代码,我们不会改变这个api。如果这是不可能的

JSON响应会比XML响应更好吗。?我们正在接受XML请求。
正在征求您的意见。

我假设此服务将通过HTTP调用,因为大多数人说“RESTful服务”就是这个意思

一般来说,大多数人将“创建”类型功能映射到
POST
方法(尽管您也可以使用
PUT

如果您只需要指出记录是创建的,那么答案是“以上都不需要”(即,您根本不需要响应主体)。通常,创建的
201
会返回一个
Location
头,该头指定了新创建的资源的URL。理论上,您也可以返回一个
204 No Content
,因为您不需要传递状态代码以外的任何东西(尽管这对于
PUT
更合适,否则无法向客户端传递新创建资源的标识符)


对于失败,如果请求消息不正确(即,它是客户端的错误),通常会返回400系列错误;如果处理时发生系统错误(即,它是服务器的错误),则会返回500系列错误。如果您需要在响应体中传递附加信息,请考虑返回一个使用诸如“代码>应用程序/VND”之类的媒体类型的响应。错误< /代码>允许您表达关于错误发生的上下文信息。

+ 1,很好的答案。我对2xx系列错误的理解是,所有这些错误要么都应该有一个主体,要么都有一些其他特殊的含义,除了204,所以如果OP只想用一个头来响应,那么204可能是最好的。阿特拉斯人的吉拉经常这样做。400是一个很好的、一般的“客户端出错”响应,500是一个很好的、一般的“服务器出错”响应。400和500可以有一个主体,也可以没有,所以它们可能非常适合这种情况,在这种情况下,您还不能完全确定您是否希望您的服务发送主体(如果您改变主意,至少它仍然返回相同的状态)@DN:实际上,您不应该对
HEAD
请求使用
204 No Content
,除非
GET
请求将返回相同的内容(可能但不太可能)。通常,当资源表示未返回时,
204
仅在非安全方法(POST、PUT、PATCH)上返回。@JW,当我写“想用头响应”时,我指的是没有主体的响应;从字面上说,只有头部。没有内容长度,没有内容类型,没有正文。与HEAD http方法无关。所以您指的是“头”?:)不,我是说头。。。http方法、资源路径和http版本都是头的一部分,但不是头。对于204,您甚至不需要发送头,只需要发送第一行。