我正在编写Go服务器和客户端,我无法弄清楚如何编写临时响应(状态代码1xx)。我为此搜索了文档和示例,但没有找到任何内容。 我的搜索确实发现了一些关于分块响应的信息,但我认为这不是我需要的。
我真的只是想发送一个临时响应,让客户知道请求已经收到(并且一些信息已被验证),而服务器获得更多数据用于最终响应。 该请求将在我的javascript客户端上使用ajax进行。我想我可以自己弄清楚客户端部分,但我是Go的新手,我可以在编写响应时使用一些帮助。
我没有很多相关的代码可供展示,因为我完全迷失了从哪里开始。但是这里是非常基本的Go服务器,我正试图建立......如果这有帮助。
package main
import (
"fmt"
"net/http"
)
func handle(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "existence is pain")
}
func main() {
http.HandleFunc("/", handle)
http.ListenAndServe(":8000", nil)
}
所以这是我的出发点,也是我被卡住的地方。 我希望能够做类似
的事情//validate request
//send interim response
//get more data
//send complete response
是否有net / http功能允许我发送临时响应?
我不应该使用http.HandleFunc()
这样的事情吗? (我应该使用什么?)
如果有人有这方面的例子,或者可以指出我正确的方向,那将有所帮助。
另外,对不起,如果“临时”不是可接受的行话。如果这引起了混淆,这是我的来源:https://msdn.microsoft.com/en-us/library/cc246721.aspx
答案 0 :(得分:2)
如果请求具有Expect: 100-continue标头,则为net / http服务器sends "HTTP/1.1 100 Continue" on first read of the request body。
该应用程序的逻辑是:
答案 1 :(得分:0)
func handle(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http. StatusContinue) // 100 code
fmt.Fprintf(w, "existence is pain")
}