### HTTP 响应
#### 发送 string 数据
Context#WriteString(contents ...interface{}) 用于发送一个默认200状态码的纯文本响应。
Context#WriteStringC(code int, contents ...interface{})用于发送一个带有状态码的纯文本响应。
~~~
func(ctx dotweb.Context) error {
ctx.WriteString("Hello, World!")
return nil
}
~~~
#### 发送 JSON 数据
Context#WriteJson(i interface{}) 用于发送一个默认200状态码的 json 对象。它会将 golang 的对象转换成 json 字符串。
Context#WriteJsonC(code int, i interface{}) 用于发送一个带有状态码的 json 对象。它会将 golang 的对象转换成 json 字符串。
~~~
// User
type User struct {
Name string `json:"name"`
Email string `json:"email"`
}
// Handler
func(ctx dotweb.Context) error {
u := &User{
Name: "Xxx",
Email: "xxx@qq.com",
}
ctx.WriteJson(u)
return nil
}
~~~
#### 发送 JSONP 数据
Conmtext#WriteJsonp(callback string, i interface{}) 用于将golang对象转换成 json 并通过回调以 jsonp 的结构发送。
~~~
// User
type User struct {
Name string `json:"name"`
Email string `json:"email"`
}
// Handler
func(ctx dotweb.Context) error {
u := &User{
Name: "Xxx",
Email: "xxx@qq.com",
}
ctx.WriteJsonp("callback", u)
return nil
}
~~~
#### 发送模板Html响应
Context#View(name string)用于发送一个默认200状态码的动态生成 html 内容
Context#ViewC(code int, name string)用于发送一个带有状态码的动态生成 html 内容
~~~
app.HttpServer.Renderer().SetTemplatePath("/wwwroot/views/")
func TestView(ctx dotweb.Context) error {
ctx.ViewData().Set("data", "图书信息")
ctx.ViewData().Set("user", &UserInfo{UserName: "user1", Sex: true})
err := ctx.View("testview.html")
return err
}
~~~
更多可参考 [模板](/devfeel/dotweb/346602)
#### 重定向
Context#Redirect(code int, targetUrl string),提供一个 url 用于重定向。
~~~
func(ctx dotweb.Context) error {
return ctx.Redirect(http.StatusMovedPermanently, "<URL>")
}
~~~