我打算在两个响应结构的标头和主体中同时使用HTTP状态代码。不要在没有设置状态码的情况下将其设置为功能参数的两倍,并再次为结构设置以避免冗余。
该参数response
的JSON()
是允许两个结构被接受的接口。编译器将引发以下异常:
response.Status undefined (type interface {} has no field or method Status)
因为响应字段必须没有状态属性。是否有另一种方法可以避免两次设置状态代码?
type Response struct {
Status int `json:"status"`
Data interface{} `json:"data"`
}
type ErrorResponse struct {
Status int `json:"status"`
Errors []string `json:"errors"`
}
func JSON(rw http.ResponseWriter, response interface{}) {
payload, _ := json.MarshalIndent(response, "", " ")
rw.WriteHeader(response.Status)
...
}
键入response
的rw.WriteHeader(response.Status)
是interface{}
。在Go中,您需要显式声明基础结构的类型,然后访问该字段:
func JSON(rw http.ResponseWriter, response interface{}) {
payload, _ := json.MarshalIndent(response, "", " ")
switch r := response.(type) {
case ErrorResponse:
rw.WriteHeader(r.Status)
case Response:
rw.WriteHeader(r.Status)
}
...
}
但是,更好的方法是为响应定义一个通用接口,该接口具有一种获取响应状态的方法:
type Statuser interface {
Status() int
}
// You need to rename the fields to avoid name collision.
func (r Response) Status() int { return r.ResStatus }
func (r ErrorResponse) Status() int { return r.ResStatus }
func JSON(rw http.ResponseWriter, response Statuser) {
payload, _ := json.MarshalIndent(response, "", " ")
rw.WriteHeader(response.Status())
...
}
而且最好重新命名Response
,以DataResponse
和ResponseInterface
到Response
,IMO。
问题内容: 我有一个像这样的对象: 现在,当我尝试访问键“ 0”的值时,例如: …我遇到了错误。(也许这不是正确的方法吗?) 如何访问数字键的值(如上)? 问题答案: 这应该工作: (是的替代语法。) 您会收到此错误,因为在JavaScript中,标识符不能以数字开头。 JavaScript标识符必须以字母,下划线(_)或美元符号($)开头;后续字符也可以是数字(0-9)。因为JavaScript
问题内容: 我正在尝试远程监控在docker中运行的JVM。配置如下所示: 机器1:在ubuntu机器上的docker中运行JVM(以我为例,运行kafka);本机的IP为10.0.1.201; 在docker中运行的应用程序位于172.17.0.85。 机器2:运行JMX监视 请注意,当我从机器2运行JMX监视时,它会失败,并显示以下错误(注意:当我运行jconsole,jvisualvm,jm
我有一个核心项目,处理常见问题并应用方面,称为“common”。服务项目将此核心项目用于常见流程。 我必须在“通用”中管理异常处理,并且我必须从通用的属性文件中读取消息。但是服务也可以有自定义消息。 所以我把一条消息放在共同点上 } 共同点是,我有common-messages.properties 允许将服务命名为service\u 1,该服务依赖于Common。 Service\u 1还有Se
问题内容: 是否可以从函数范围内访问python函数对象属性? 例如让我们 现在,如果要返回_x属性内容“ foo”,则必须是什么?如果有可能(简单) 谢谢 更新: 我也想做以下工作: 更新2: 声明不可能(如果是这种情况),以及为什么,比提供一种方法来伪造它更令人满意,例如使用不同于函数的对象 问题答案: 解 使函数的默认参数之一成为对函数本身的引用。 用法示例: 说明 原始张贴者想要一种不需要
问题内容: 如何访问组件的属性。我以为会在this.props中,但事实并非如此。 例如 并在产品列表中 退货 没有任何关键属性。我可以创建另一个属性并为其分配相同的值,但是由于key属性已经被使用,因此这似乎是多余的。 另外,键属性在整个组件中是否必须是唯一的,还是仅在其要呈现的循环或集合中是唯一的? 问题答案: 该属性由React在后台使用,并且不会暴露给您。您将要使用自定义属性并将该数据传递
问题内容: 我正在尝试编写一个访问USB端口以读取和写入通过USB连接的设备的Java应用程序。我面临的问题是,我不知道在Java中究竟要使用什么来做这样的事情。我在网上搜索,发现有一个叫的东西,但所有帖子看起来都相当老。 目前,我正在使用这些库,但有时会遇到一些同步错误。当我使用C#进行等效操作时,它需要的代码要少得多,而且我不会遇到任何相同的同步错误。 我的问题是, JRE的最新版本中是否包含