618-Golang的http服务器编写

http模块-监听、请求处理

在这里插入图片描述
Go语言之下,所有的跟网络相关的都在net包下
在这里插入图片描述
我们在使用http有两件事情:

1.有用户请求的时候如何处理
2.监听的是哪个端口

监听:告诉操作系统,某个端口是由当前程序处理的
在这里插入图片描述
https://是协议部分
//后面的部分是host主机域名
/后面的是请求的路径
http 端口号:80
https 端口号:443

在这里插入图片描述

package main

import (
  "net/http"
)

func main(){
  //1.处理请求 HandleFunc:注册一个处理函数
  //第1个参数:用户请求的地址
  //第2个参数的函数是有参数的
  http.HandleFunc("/", func (
    w http.ResponseWriter,//给前台发送响应
    req *http.Request,//Request:前台请求了什么的信息
  ){

  })

  //2.监听,准备开始服务,监听80号端口 监听参数:nil
  http.ListenAndServe(":80", nil)
}

在这里插入图片描述
服务器就开起来了
本地的服务器的域名:localhost
在这里插入图片描述
为什么是白的?因为我们刚才写的服务器没有结果返回
在这里插入图片描述
在这里插入图片描述
localhost默认访问80端口,如果服务器不是80端口,则要自己添加:端口号

http模块-数据响应、请求信息

能用于操作文件的方法都适用于操作w http.ResponseWriter
在这里插入图片描述
Fprintf向指定的writer打印
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
我们还可以处理图片:

package main

import (
  "net/http"
  "io/ioutil"
  "encoding/json"
  // "fmt"
)

func main(){
  //1.处理请求
  http.HandleFunc("/", func (
    w http.ResponseWriter,
    req *http.Request,
  ){
    // fmt.Fprintf(w, "aaa %d", 12)
    // w.Write([]byte("dasdfasdf"))

    data,err:=ioutil.ReadFile("./a.png")
    if err!=nil {panic(err)}

    w.Write(data)
  })

  //2.监听
  http.ListenAndServe(":80", nil)
}

然后跳到localhost,图片就出来了

发送响应的总结

发送响应:
1.字符串
  w.Write([]byte("dfasdfdas"))

2.动态字符串
  fmt.Fprintf(w, "xxxx", x, x)

3.二进制(例如:文件)
  data=ioutil.Read(xxx)
  w.Write(data)

4.json
  json.NewEncoder(w).Encode(map/struct)

json的使用方法如下:

package main

import (
  "net/http"
  "encoding/json"
)

func main(){
  //1.处理请求
  http.HandleFunc("/", func (
    w http.ResponseWriter,
    req *http.Request,
  ){
    json.NewEncoder(w).Encode(map[string]string{
      "name": "blue",
      "gender": "male",
    })
  })

  //2.监听
  http.ListenAndServe(":80", nil)
}

在这里插入图片描述
在这里插入图片描述

req—请求信息

在这里插入图片描述

在这里插入图片描述

package main

import (
  "net/http"
)

func main(){
  //1.处理请求
  http.HandleFunc("/", func (
    w http.ResponseWriter,
    req *http.Request,
  ){
    w.Write([]byte("aaa"))
  })

  //2.监听
  http.ListenAndServe(":80", nil)
}

在这里插入图片描述
在这里插入图片描述
我们现在的这个路径:/ 是向后匹配,只要开头是/的,都可以匹配
如果我们要特定的某一个,我们就要/往后加在这里插入图片描述
在这里插入图片描述
我们需要路由,精确匹配

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林林林ZEYU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值