go http 包仅支持来自 RFC 2616 的状态代码。许多 REST api(如 github)使用 422 表示错误的输入数据。我也想这样做,但我没有看到这样做的好方法。我看到的选项是
将源码编辑到http包中并添加。这很容易做到,但不利于编辑核心库。
http.Response 结构具有作为字符串的 Status 作为 int 的 StatusCode。我想我可以在响应中设置它们,但是 http.Handler 只有一个 RespnseWriter 接口(interface)。可以制作一个具有正确设置响应的 RoundTripper 的 http.Transport。即使有可能,这在某种程度上看起来也是一种 hacky。
那么添加自定义 http 状态代码的最佳方式是什么,还是一个坏主意?
最佳答案
由于状态 422 Unprocessable Entity
是 WebDAV 扩展,您可以使用包 golang.org/x/net/webdav
并正确处理:
http.Error(w,
webdav.StatusText(webdav.StatusUnprocessableEntity),
webdav.StatusUnprocessableEntity)
关于http - 如何在 golang 中使用 "422 Unprocessable Entity (WebDAV)"或任何其他自定义 http 状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20547945/