本文整理汇总了Golang中github.com/coffeehc/web.Reply.With方法的典型用法代码示例。如果您正苦于以下问题:Golang Reply.With方法的具体用法?Golang Reply.With怎么用?Golang Reply.With使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/coffeehc/web.Reply
的用法示例。
在下文中一共展示了Reply.With方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: DoProxy
func (this *Proxy) DoProxy(request *http.Request, reply *web.Reply, chain web.FilterChain) {
request.URL.Scheme = this.scheme
request.URL.Host = this.host
request.Host = this.host
request.RequestURI = ""
resp, err := this.client.Do(request)
if err != nil {
reply.SetCode(500)
reply.With(fmt.Sprintf("代理错误:%s", err))
return
}
reply.SetCode(resp.StatusCode)
for k, v := range resp.Header {
reply.SetHeader(k, v[0])
}
reply.With(resp.Body)
}
示例2: Index
// Index responds with the pprof-formatted profile named by the request.
// For example, "/debug/pprof/heap" serves the "heap" profile.
// Index responds to a request for "/debug/pprof/" with an HTML page
// listing the available profiles.
func Index(request *http.Request, pathFragments map[string]string, reply *web.Reply) {
if strings.HasPrefix(request.URL.Path, "/debug/pprof/") {
name := strings.TrimPrefix(request.URL.Path, "/debug/pprof/")
if name != "" {
handler(name).RequestHandler(request, pathFragments, reply)
return
}
}
r, w := io.Pipe()
go func() {
defer w.Close()
profiles := pprof.Profiles()
if err := indexTmpl.Execute(w, profiles); err != nil {
logger.Error("出现错误:%s", err)
}
}()
reply.With(r)
}
示例3: RequestHandler
func (name handler) RequestHandler(request *http.Request, pathFragments map[string]string, reply *web.Reply) {
reply.SetContentType("text/plain; charset=utf-8")
debug, _ := strconv.Atoi(request.FormValue("debug"))
p := pprof.Lookup(string(name))
if p == nil {
reply.SetCode(404).With(fmt.Sprintf("Unknown profile: %s\n", name))
return
}
gc, _ := strconv.Atoi(request.FormValue("gc"))
if name == "heap" && gc > 0 {
runtime.GC()
}
r, w := io.Pipe()
go func() {
defer w.Close()
p.WriteTo(w, debug)
}()
reply.With(r)
}
示例4: Profile
func Profile(request *http.Request, pathFragments map[string]string, reply *web.Reply) {
sec, _ := strconv.ParseInt(request.FormValue("seconds"), 10, 64)
if sec == 0 {
sec = 30
}
reply.SetContentType("application/octet-stream")
r, w := io.Pipe()
if err := pprof.StartCPUProfile(w); err != nil {
reply.SetContentType("text/plain; charset=utf-8")
reply.SetCode(http.StatusInternalServerError)
reply.With(fmt.Sprintf("Could not enable CPU profiling: %s\n", err))
return
}
go func() {
time.Sleep(time.Duration(sec) * time.Second)
pprof.StopCPUProfile()
w.Close()
}()
reply.With(r)
}
示例5: Symbol
// Symbol looks up the program counters listed in the request,
// responding with a table mapping program counters to function names.
// The package initialization registers it as /debug/pprof/symbol.
func Symbol(request *http.Request, pathFragments map[string]string, reply *web.Reply) {
reply.SetContentType("text/plain; charset=utf-8")
// We have to read the whole POST body before
// writing any output. Buffer the output here.
var buf bytes.Buffer
fmt.Fprintf(&buf, "num_symbols: 1\n")
var b *bufio.Reader
if request.Method == "POST" {
b = bufio.NewReader(request.Body)
} else {
b = bufio.NewReader(strings.NewReader(request.URL.RawQuery))
}
for {
word, err := b.ReadSlice('+')
if err == nil {
word = word[0 : len(word)-1] // trim +
}
pc, _ := strconv.ParseUint(string(word), 0, 64)
if pc != 0 {
f := runtime.FuncForPC(uintptr(pc))
if f != nil {
fmt.Fprintf(&buf, "%#x %s\n", pc, f.Name())
}
}
// Wait until here to check for err; the last
// symbol will have an err because it doesn't end in +.
if err != nil {
if err != io.EOF {
fmt.Fprintf(&buf, "reading request: %v\n", err)
}
break
}
}
reply.With(string(buf.Bytes()))
}
示例6: Service
func Service(request *http.Request, param map[string]string, reply *web.Reply) {
reply.With("123" + param["name"])
panic(errors.New("test error"))
}