跳到主要内容
版本:4.0-rc

WebAPI 调用上下文

一、调用上下文

在 WebAPI 方法中,可以通过 IWebApiCallContext 访问请求的详细信息和进行高级操作。

1.1 获取调用上下文

🔄 正在加载代码...

调用上下文提供的信息:

  • callContext.Caller - 客户端连接对象(IP、Port、Id 等)
  • callContext.HttpContext - HTTP 上下文
  • callContext.HttpContext.Request - HTTP 请求对象
  • callContext.HttpContext.Response - HTTP 响应对象

二、客户端信息

2.1 获取客户端 IP 和端口

通过 Caller 属性获取客户端连接信息:

🔄 正在加载代码...

可用信息

  • callContext.Caller.IP - 客户端 IP 地址
  • callContext.Caller.Port - 客户端端口
  • callContext.Caller.Id - 客户端连接 ID

三、HTTP 上下文

3.1 访问 HTTP 请求

通过 HttpContext.Request 访问请求信息:

  • request.Method - HTTP 方法(GET、POST 等)
  • request.URL - 完整 URL
  • request.RelativeURL - 相对路径
  • request.Headers - 请求头集合
  • request.Query - 查询参数集合

3.2 访问 HTTP 响应

通过 HttpContext.Response 设置响应:

  • response.SetStatus(code, message) - 设置状态码
  • response.Headers[name] = value - 设置响应头
  • response.ContentType - 设置内容类型
  • response.SetContent(data) - 设置响应内容

四、响应定制

4.1 自定义响应状态码

🔄 正在加载代码...

4.2 设置响应头

🔄 正在加载代码...

4.3 设置 Content-Type

🔄 正在加载代码...

五、高级场景

5.1 WebSocket 升级

可以将 HTTP 连接升级为 WebSocket:

🔄 正在加载代码...

5.2 流式响应

对于大型数据或实时数据,可以使用流式响应:

🔄 正在加载代码...

六、常见场景示例

6.1 获取客户端信息和请求详情

🔄 正在加载代码...

6.2 条件响应

根据条件返回不同的响应:

🔄 正在加载代码...

七、注意事项

7.1 响应写入时机

  • 如果方法有返回值,框架会自动序列化并写入响应
  • 如果使用 Response.AnswerAsync() 手动写入,方法应返回 Taskvoid

7.2 异步操作

  • 文件操作、流操作建议使用异步方法(async/await
  • 避免在 WebAPI 方法中执行长时间阻塞操作

7.3 资源释放

  • 对于文件流、数据库连接等资源,确保正确释放
  • 使用 using 语句或 try-finally