一个简单的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 提交数据方式

golang server示例的更多相关文章

  1. Golang爬虫示例包系列教程(一):pedaily.com投资界爬虫

    Golang爬虫示例包 文件结构 自己用Golang原生包封装了一个爬虫库,源码见go get -u -v github.com/hunterhug/go_tool/spider ---- data ...

  2. Golang gRPC 示例

    1.安装gRPC runtime go get google.golang.org/grpc 为了自动生成Golang的gRPC代码,需要安装protocal buffers compiler以及对应 ...

  3. Mysql Federated Server 示例

    Federated存储引擎访问在远程数据库的表中的数据,而不是本地的表.创建一个Federated表的时候,服务器在数据库目录创建一个表定义文件.无其它表被创建,因为实际的数据在一个远程数据库上.这不 ...

  4. go Server示例

    示例1: package main import ( "fmt" "log" "net/http" "time" ) f ...

  5. SQL SERVER示例:修改自定义数据类型精度

    /*--修改自定义数据类型精度的示例      自定义数据类型一旦被引用,就不能再修改和删除,如果要修改数据的精度,就非常麻烦,下面的示例演示了如何修改      假设要修改的自定义变量名为aa -- ...

  6. golang multiconfig 示例

    参考资料:https://github.com/koding/multiconfig 测试代码: package main import ( "fmt" "github. ...

  7. golang语言示例

    package main import "fmt" /* my first programmer in go */ func fib(n int) int{ if n<2{ ...

  8. golang json 示例

    jsonStr, err := client.Get( deviceIdKey ).Result() if err == redis.Nil { deviceIds = []string{device ...

  9. golang操作redis/go-redis库

    目录 Redis介绍 Redis支持的数据结构 Redis应用场景 准备Redis环境 go-redis库 安装 连接 普通连接 V8新版本相关 连接Redis哨兵模式 连接Redis集群 基本使用 ...

随机推荐

  1. MyEclipse 10安装SVN插件subclipse

    1. 下载SVN插件subclipse 下载地址:http://subclipse.tigris.org/servlets/ProjectDocumentList?expandFolder=2240& ...

  2. Linux常用命令01(文件和目录)

    目标 查看目录内容 ls 切换目录 cd 创建和删除文件 touch rm mkdir 拷贝和移动文件 cp mv 查看文件内容 cat more grep 其他 echo 重定向 > 和 &g ...

  3. 使用python pip安装工具组件包:出现 requests File “<stdin>",line 1 pip install xxx ^ SyntaxError:invalid syntax

    最近想要试试python ,软件安装完成了,但是,import 组件包时,出了问题,一直不得解:安装pycharm 工具感觉麻烦,不想安装那些,只想单纯使用python . 问题复现: 1.Windo ...

  4. DataGridView行号发生变化 使用的事件

    DataGridView并没有这么专门为行号发生变化时触发的事件,我们只能用SelectionChanged和CurrentCellChanged做些设置后实现. 1.使用SelectionChang ...

  5. ASE team work proposal

    Hi,我们是Azure Wrapper,欢迎来到我们的blog~我们将在这里记录下ASE课程的滴滴点点,美妙的旅程就要开始啦! 以下是每位队员提交的关于ASE 团队项目的提议: 朱玉影: 随着信息时代 ...

  6. 胜利大逃亡 BFS

    Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0 ...

  7. Buu刷题

    前言 希望自己能够更加的努力,希望通过多刷大赛题来提高自己的知识面.(ง •_•)ง easy_tornado 进入题目 看到render就感觉可能是模板注入的东西 hints.txt给出提示,可以看 ...

  8. 线上Bug无法复现怎么办?老司机教你一招,SpringBoot远程调试不用愁!

    前言 在部署线上项目时,相信大家都会遇到一个问题,线上的 Bug 但是在本地不会复现,多么无奈. 此时最常用的就是取到前端传递的数据用接口测试工具测试,比如 POSTMAN,复杂不,难受不? 今天陈某 ...

  9. all_user_func()详解

    来源:https://blog.csdn.net/moliyiran/article/details/83514495 call_user_func — 把第一个参数作为回调函数调用 通过函数的方式回 ...

  10. java学习(第五篇)包装类

    一.Integer package com.test01; public class IntegerTest01 { public static void main(String[] args) { ...