Go语言中http.ResponseWriter接口

 更新时间:2024年08月20日 09:41:42   作者:吃我一个平底锅  
http.ResponseWriter是Go语言中用来设置HTTP响应的接口,本文主要介绍了Go语言中http.ResponseWriter接口,具有一定的参考价值,感兴趣的可以了解一下

在 Go 语言中,客户端请求信息都封装到了 Request 对象,并通过 ResponseWriter 将响应发送回客户端:

package main

import (
	"fmt"
	"net/http"
)

func myHandler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintln(w, "hello world")
}

func main() {
	http.HandleFunc("/go", myHandler)

	http.ListenAndServe("127.0.0.1:8000", nil)
}

ResponseWriter 源码结构如下:

type ResponseWriter interface {
   // 用于设置/获取所有响应头信息
	Header() Header
   // 用于写入数据到响应实体
	Write([]byte) (int, error)
   // 用于设置响应状态码
	WriteHeader(statusCode int)
}

包含三个方法:

  • WriteHeader:主要作用是在 API 接口中返回错误码,支持传入一个整型数据用来表示响应状态码,如果不调用该方法的话,默认响应状态码是 200 OK。
  • Header:用于设置响应头信息,可以通过 w.Header().Set 方法设置响应头;通过 w.Header().Add 方法新增响应头
  • Write:用于写入数据到 HTTP 响应实体,如果调用 Write 方法时还不知道 Content-Type,会通过数据的前 512 个字节进行判断。

例如:w.Header().Set("Content-Type", "application/octet-stream")

content-type

指示响应内容的格式,如果这个类型浏览器能够支持阅览并且没有设置content-disposition情况浏览器就会直接展示该资源,比如png、jpeg、video等格式,如果浏览器不支持就会,默认触发下载。常见如下格式:

在这里插入图片描述

content-disposition

包含响应数据的描述信息,以及下载或者在线查看的处理方式。

application/octet-stream

在某些下载文件的场景中,服务端可能会返回文件流,并在返回头中带上Content-Type: application/octet-stream,告知浏览器这是一个字节流,浏览器处理字节流的默认方式就是下载。

例如:当我们在浏览器输入http://localhost:9999/_geecache/scores/Tom时,会触发下载:

在这里插入图片描述

到此这篇关于Go语言中http.ResponseWriter接口的文章就介绍到这了,更多相关Go http.ResponseWriter接口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • PHP结构型模式之组合模式

    PHP结构型模式之组合模式

    这篇文章主要介绍了PHP组合模式Composite Pattern优点与实现,组合模式是一种结构型模式,它允许你将对象组合成树形结构来表示“部分-整体”的层次关系。组合能让客户端以一致的方式处理个别对象和对象组合
    2023-04-04
  • 基于golang的简单分布式延时队列服务的实现

    基于golang的简单分布式延时队列服务的实现

    这篇文章主要介绍了基于golang的简单分布式延时队列服务的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 减少 golang 二进制文件大小操作

    减少 golang 二进制文件大小操作

    这篇文章主要介绍了减少 golang 二进制文件大小操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 8个Elasticsearch高频面试题和答案整理

    8个Elasticsearch高频面试题和答案整理

    这篇文章为大家精选了8道Elasticsearch高频面试题和答案,并且给出了这些知识点的应用场景、也给出了解决这些问题的思路,希望对大家有所帮助
    2023-06-06
  • GoLang桥接模式的实现示例

    GoLang桥接模式的实现示例

    桥接模式是一种结构型设计模式,通过桥接模式可以将抽象部分和它的实现部分分离,本文主要介绍了GoLang桥接模式,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Go语言中nil判断的注意事项(最新推荐)

    Go语言中nil判断的注意事项(最新推荐)

    本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-06-06
  • Golang中的深拷贝与浅拷贝使用

    Golang中的深拷贝与浅拷贝使用

    本文主要介绍了Golang中的深拷贝与浅拷贝使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Go语言Time包的具体使用

    Go语言Time包的具体使用

    Go语言中有关于时间和日期的方法都在time包里面,本文主要介绍了Go语言Time包,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • 详解Go语言如何实现并发安全的map

    详解Go语言如何实现并发安全的map

    go语言提供的数据类型中,只有channel是并发安全的,基础map并不是并发安全的,本文为大家整理了三种实现了并发安全的map的方案,有需要的可以参考下
    2023-12-12
  • Go语言使用Etcd实现分布式锁

    Go语言使用Etcd实现分布式锁

    etcd是近几年比较火热的一个开源的、分布式的键值对数据存储系统,本文将介绍如何利用Etcd实现分布式锁,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-05-05

最新评论