返回首页 | 申博娱乐APP下载

合作共赢、快速高效、优质的网站建设提供商

更多精品源码-尽在织梦模板-www.moke8.com

dotweb结构之旅 [四] - 常用目标-HttpContext

时间:2017-10-23 编辑:admin

dotweb归于一个Web结构,期望经过结构行为,协助开发人员快速构建Web运用,提高开发功率,削减不必要的代码臃肿。

结构地址:https://github.com/devfeel/dotweb

dotweb包括以下几个常用申博娱乐手机版目标:

App(dotweb) App容器,为Web恳求处理供给必要的容器类功用。 HttpServer用于真实处理Web恳求的效劳模块。 HttpContext用于供给单次恳求处理中恳求信息与呼应信息的方便处理与仅有进口。 Response 用于从效劳器向用户发送输出的成果。 Request 用于从用户那里获得信息。 Session 用于存储关于某个衔接会话的信息,或许修正相关的设置。现在支撑存储本机内存与Redis分布式。

本章首要对HttpContext目标打开介绍。

HttpContext完成Context接口,首要承当单次恳求处理中恳求信息、呼应信息、大局目标的方便功用与仅有进口。

首要办法

办法 描绘
HttpServer()
获取当时恳求所属HttpServer目标
Response()
获取当时恳求的Response目标
Request()
获取当时恳求的Request目标
WebSocket()
如果是WebSocket衔接,回来WebSocket目标
HijackConn()
如果是Hijack恳求,回来Hijack衔接目标
AppContext()
回来大局目标容器
Cache()
回来大局缓存目标
Items()
回来当时恳求流程内有用的目标容器
ViewData()
回来用于模板数据传输的目标容器
Session()
回来当时恳求有用的Session目标
Redirect()
供给跳转支撑,默许主张302跳转
QueryString()
指定Key查询Get参数的值
PostFormValue()
指定Key查询Post参数的值
GetRouterName()
指定Key查询动态路由值
ReadCookie()
指定Key读取Cookie目标
Bind()
将Json、Xml、Form提交的特点绑定指定结构体
Write()
指定状况码输出二进制内容
WriteString()\WriteStringC()
输出字符串,默许text/plain,其间以C结束的办法支撑设置状况码
WriteHtml()\WriteHtmlC()
输出Html字符串,默许text/html,其间以C结束的办法支撑设置状况码
WriteJson()\WriteJsonC()
输出Json字符串,默许application/json,其间以C结束的办法支撑设置状况码
WriteJsonp()
输出适配Jsonp的字符串
View()ViewC()
指定模板称号输出Html内容,其间以C结束的办法支撑设置状况码

常用功用示例:

1、获取Get参数值

func Index(ctx dotweb.Context) error {
    userid := ctx.QueryString("userid")
    ctx.WriteString(userid)
    return nil
}

2、获取Post参数值

func Index(ctx dotweb.Context) error {
    userid := ctx.PostFormValue("userid")
    ctx.WriteString(userid)
    return nil
}

3、获取Post Body

func Index(ctx dotweb.Context) error {
    data := ctx.Request().PostBody()
    ctx.Write(200, data)
    return nil
}

4、获取上传的文件

func Index(ctx dotweb.Context) error {
    file, err := ctx.Request().FormFile("filekey")
    if err != nil {
        ctx.WriteString("upload file error:", err.Error())
    } else {
        ctx.WriteString(file.FileName())
    }
    return nil
}

5、读取Cookie

func Index(ctx dotweb.Context) error {
    c, err := ctx.ReadCookie("UserName")
    if err!= nil{
        ctx.WriteString(err.Error())
    }else {
        ctx.WriteString(c.Value)
    }
    return nil
}

6、写入Session值

func Index(ctx dotweb.Context) error {
    ctx.Session().Set("UserID", 1)
    ctx.WriteString("set session success")
    return nil
}

7、输出字符串(默许200状况码)

func Index(ctx dotweb.Context) error {
    ctx.WriteString("welcome to dotweb")
    return nil
}

8、输出Json字符串(默许200状况码)

func Index(ctx dotweb.Context) error {
    type User struct {
        UserName string
        Age int
    }
    u:=&User{
        UserName:"dotweb",
        Age:1,
    }
    ctx.WriteJson(u)
    return nil
}

9、指定模板称号输出Html字符串

type UserInfo struct {
    UserName string
    ***      bool
}

type BookInfo struct {
    Name string
    Size int64
}

func TestView(ctx dotweb.Context) error {
    ctx.ViewData().Set("data", "图书信息")
    ctx.ViewData().Set("user", &UserInfo{UserName: "user1", ***: true})
    m := make([]*BookInfo, 5)
    m[0] = &BookInfo{Name: "book0", Size: 1}
    m[1] = &BookInfo{Name: "book1", Size: 10}
    m[2] = &BookInfo{Name: "book2", Size: 100}
    m[3] = &BookInfo{Name: "book3", Size: 1000}
    m[4] = &BookInfo{Name: "book4", Size: 10000}
    ctx.ViewData().Set("Books", m)

    err := ctx.View("testview.html")
    return err
}

10、跳转地址

func Redirect(ctx dotweb.Context) error {
    err := ctx.Redirect(http.StatusFound, "http://www.baidu.com")
    if err != nil {
        ctx.WriteString(err)
    }
    return err
}

11、设置Header

func Index(ctx dotweb.Context) error {
    ctx.Response().Header().Set("Content-Type", "text/html; charset=utf-8")
    ctx.WriteString("welcome to dotweb")
    return nil
}

以上简略示例,展现了怎么经过Context获取恳求信息,设置输出信息,运用Session等。

更多代码可参阅https://github.com/devfeel/dotweb-example

欢迎各位参加我们的go言语QQ群:193409346


浏览:

网站建设

流程

    网站建设流程