go http包仅支持来自RFC 2616的状态代码.许多REST apis如
github使用422来输入错误的输入数据.我也想这样做,但我没有看到这样做的好方法.我看到的选项是
>将源代码编辑到http包并添加它.这很容易做,但编辑核心库会很糟糕.
> http.Response结构将Status作为字符串StatusCode作为int.我想我可以在响应中设置它们,但http.Handler只有一个RespnseWriter接口.有可能创建一个具有正确设置响应的RoundTripper的http.Transport.即使有可能,这似乎在某种程度上是一种hacky.
那么添加自定义http状态代码的最佳方法是什么,或者只是一个坏主意?
最佳答案 由于状态422 Unprocessable Entity是WebDAV扩展,您可以使用包
golang.org/x/net/webdav
并正确处理它:
http.Error(w,
webdav.StatusText(webdav.StatusUnprocessableEntity),
webdav.StatusUnprocessableEntity)