如何使用;422不可处理实体(WebDAV)“;或golang中的任何其他自定义http状态代码
go http包仅支持来自RFC 2616的状态代码。许多REST API(如github)使用422处理错误的输入数据。我也想这样做,但我不认为在围棋中这样做有什么好方法。我看到的选择是如何使用;422不可处理实体(WebDAV)“;或golang中的任何其他自定义http状态代码,http,go,Http,Go,go http包仅支持来自RFC 2616的状态代码。许多REST API(如github)使用422处理错误的输入数据。我也想这样做,但我不认为在围棋中这样做有什么好方法。我看到的选择是 编辑http包的源代码并将其添加。这很容易做到,但编辑核心库却不好 Response结构的Status是字符串StatusCode,是int。我想我可以在Response中设置它们,但是http.Handler只有respneswriter接口。可能会创建一个http.Transport,该Transport
那么,添加自定义http状态代码的最佳方法是什么,或者这只是一个坏主意 您可以将状态代码作为http.Error()的参数手动插入: 这将返回状态422和响应“一些响应文本”
是指向文档中此功能的链接。由于状态
422不可处理实体
是WebDAV扩展,您可以使用该软件包并正确处理它:
http.Error(w,
webdav.StatusText(webdav.StatusUnprocessableEntity),
webdav.StatusUnprocessableEntity)
为什么不能使用任意状态码?为什么不直接调用ResponseWriter上的WriteHeader(422)?如果这样做,http响应看起来像“http/1.1 422状态代码422”。我希望它是“HTTP/1.1 422不可处理的实体”,我认为这是值得的,但我也认为你是对的,现在没有简单的方法可以做到这一点。您需要能够在此映射中添加一个条目:可能提交一个功能请求,现在只修补库?http.Error只是将字符串作为主体添加到http响应中,响应行看起来像“http/1.1 422状态代码422”而不是“http/1.1 422不可处理实体”。
http.Error(w,
webdav.StatusText(webdav.StatusUnprocessableEntity),
webdav.StatusUnprocessableEntity)