v2中文文档
项目

respond

写一个硬编码/静态响应给客户端。

如果响应体非空,此指令会在尚未设置Content-Type头时设置它。默认值是text/plain; utf-8;如果响应体是有效的JSON对象或数组,则设置为application/json。对于所有其他内容类型,请使用header指令显式设置合适的Content-Type。

语法

respond [<matcher>] <status>|<body> [<status>] {
	body <text>
	close
}
  • <status> 是要写入的HTTP状态码。

    如果是103(Early Hints),响应会在没有响应体的情况下写出,并且处理器链会继续。(HTTP 1xx响应是信息性响应,不是最终响应。)

    默认:200

  • <body> 是要写入的响应体。

  • body 是提供响应体的另一种方式;如果是多行内容会很方便。

  • close 会在写完响应后关闭客户端与服务器的连接。

澄清一下,第一个非匹配器参数可以是3位状态码,也可以是响应体字符串。如果它是响应体,下一个参数可以是状态码。

示例

对所有健康检查写入空响应体的200状态,并对所有其他请求写入简单响应体:

example.com {
	respond /health-check 200
	respond "Hello, world!"
}

写入错误响应并关闭连接:

example.com {
	respond /secret/* "Access denied" 403 {
		close
	}
}

使用heredoc语法控制空白并写入HTML响应,同时设置Content-Type头以匹配响应体:

example.com {
	header Content-Type text/html
	respond <<HTML
		<html>
			<head><title>Foo</title></head>
			<body>Foo</body>
		</html>
		HTML 200
}