golang server示例

一个简单的web服务器

package main

import (
    "fmt"
    "log"
    "net/http"
)

func main() {
    http.HandleFunc("/", handler)
    log.Fatal(http.ListenAndServe("localhost:8888", nil))
}

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Println("url.path is ", r.URL.Path)
}

简单看下Request结构体中几个重要成员

type Request struct {
    // Form contains the parsed form data, including both the URL
    // field‘s query parameters and the POST or PUT form data.
    // This field is only available after ParseForm is called.
    // The HTTP client ignores Form and uses Body instead.
    Form url.Values

    // PostForm contains the parsed form data from POST, PATCH,
    // or PUT body parameters.
    //
    // This field is only available after ParseForm is called.
    // The HTTP client ignores PostForm and uses Body instead.
    PostForm url.Values

    // MultipartForm is the parsed multipart form, including file uploads.
    // This field is only available after ParseMultipartForm is called.
    // The HTTP client ignores MultipartForm and uses Body instead.
    MultipartForm *multipart.Form
}

获取get参数

func handler(w http.ResponseWriter, r *http.Request) {
    r.ParseForm()
    fmt.Println("value of param key is:", r.Form.Get("key"))
}

获取post参数

提交方式: application/x-www-form-urlencoded

func handler(w http.ResponseWriter, r *http.Request) {
    r.ParseForm()
    fmt.Println("value of param key is:", r.PostFormValue("key"))
}

提交方式: json

type RequestParm struct {
    Name      string `json:"name"`
    Age       int    `json:"age"`
    ScoreList []int  `json:"score_list"`
}
// NewDecoder
func handler(w http.ResponseWriter, r *http.Request) {
    req := &RequestParm{}
    err := json.NewDecoder(r.Body).Decode(req)
    if err != nil {
        fmt.Println("json decode error")
        return
    }
    fmt.Println(req)
}
// Unmarshal
func handler(w http.ResponseWriter, r *http.Request) {
    req := &RequestParm{}

    body, err := ioutil.ReadAll(r.Body)
    if err != nil {
        panic(err)
    }

    err = json.Unmarshal(body, req)
    if err != nil {
        panic(err)
    }

    fmt.Println(req)
}

参考资料

四种常见的 POST 提交数据方式

原文地址:https://www.cnblogs.com/gattaca/p/9462979.html

时间: 2024-07-31 00:35:03

golang server示例的相关文章

Golang gRPC 示例

1.安装gRPC runtime go get google.golang.org/grpc 为了自动生成Golang的gRPC代码,需要安装protocal buffers compiler以及对应的GoLang插件 2.protocal buffer安装 从https://github.com/google/protobuf/releases下载安装包,例如:protobuf-cpp-3.0.0-beta-3.zip,解压后 ./configure make && make insta

分别使用Java IO、NIO、Netty实现的一个Echo Server示例

分别使用Java IO.Java NIO.Netty来实现一个简单的EchoServer(即原样返回客户端的输入信息). Java IO int port = 9000; ServerSocket ss = new ServerSocket(port); while (true) { final Socket socket = ss.accept(); new Thread(new Runnable() { public void run() { while (true) { try { Buf

常用SQL server示例

1.去除记录中的空格 ltrim()去除左空格rtrim()去除右空格 select ltrim(rtrim(字段名)) from 表名. 2.增 INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) INSERT INTO 表名称 VALUES (值1, 值2,....) insert into 表名1 (列名1,列名2--) select 列名a,列名b-- from 表名2 (前提是表1已经存在且字段数据类型与表2兼容) 例如:i

安装sql server 示例数据仓库 AdventureWorks

1.下载AdventureWorksDB.msi数据库文件. 2.放到指定的目录安装 3.打开sqlserver2005附加数据库. 4.查询

golang json 示例

jsonStr, err := client.Get( deviceIdKey ).Result() if err == redis.Nil { deviceIds = []string{deviceId} fmt.Println("nil" ) } else if err != nil { //error r.status = -2 fmt.Println( "error ",err  ) return c.JSON(http.StatusOK, r) } els

Golang枚举示例之Day

GOPATH\src\day\day.go package day type Day uint const ( Sunday Day = iota Monday Tuseday Wednesday Thursday Friday Saturday ) func (day Day) String() string { switch day { case Sunday: return "Sunday" case Monday: return "Monday" case

golang语言示例

package main import "fmt" /* my first programmer in go */ func fib(n int) int{ if n<2{ return n } return fib(n-1)+fib(n-2) } func max(x, y int) int{ if x>y{ return x } return y } func main(){ var i int fmt.Println("Hello, world!"

Tomcat的基础知识和一些应用,session cluster和session server

Tomcat简单来说就是JAVA 2 EE 加上Servlet和JSP类库的实现,tomcat=JWS(Sun)+ Jserv(ASF) Tomcat的核心组件: catalina:servlet container Coyote:http connection Jasper:JSP Engine 执行引擎 TomcatInstance: 运行中的tomcat进程(java进程) Server:即一个tomcat实例: Service:用于将connector关联至engine组件:一个serv

教程:SQL Server Management Studio

此工具由 Microsoft Visual Studio, Management Studio 内部承载,它提供了用于数据库管理的图形工具和功能丰富的开发环境.通过 Management Studio,您可以在同一个工具中访问和管理数据库引擎.Analysis Manager 和 SQL 查询分析器,并且能够编写 Transact-SQL.MDX.XMLA 和 XML 语句.  学习内容 熟悉 Management Studio 的最好方式是进行实践演练.本教程将讲述如何管理 Managemen