You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Swift-NIO发送简单的HTTP 201 Created响应

发送无响应体的HTTP 201 Created响应(Swift-NIO 2.65.0)

处理完文件保存后,核心是构建符合规范的HTTP响应头并正确发送,不需要额外的响应体内容。以下是具体实现方式:

代码示例

import NIO
import NIOHTTP1

func channelRead(context: ChannelHandlerContext, data: NIOAny) {
    // 省略文件接收、保存的业务逻辑...
    
    // 构建201响应头,明确指定Content-Length为0
    let responseHead = HTTPResponseHead(
        version: .http1_1,
        status: .created,
        headers: HTTPHeaders([
            ("Content-Length", "0"),
            ("Connection", "keep-alive") // 根据你的连接策略调整,可选
        ])
    )
    
    // 封装成响应头部分并发送(无需响应体)
    let responsePart = HTTPServerResponsePart.head(responseHead)
    context.writeAndFlush(responsePart, promise: nil)
    
    // 如果是短连接场景,可追加关闭连接的逻辑:
    // context.close(promise: nil)
}

关键注意事项

  • 必须设置Content-Length: 0:HTTP规范要求无响应体的请求必须明确告知客户端内容长度为0,否则客户端会一直等待响应体,导致请求挂起。
  • 只发送响应头部分:用HTTPServerResponsePart.head封装响应头即可,不需要发送.body或.end类型的响应片段。
  • 用writeAndFlush替代单独的write:write仅将数据写入缓冲区,flush才会把缓冲区内容推送至客户端,两者结合才能确保响应立即发出。

内容的提问来源于stack exchange,提问作者Brijender Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 08:33:09