c# - 以编程方式访问 dotnet 核心项目中的 HTTP 端点
问题描述
我很好奇是否可以直接向 dotnet core (2.2) 程序中的 HTTP 请求处理程序发出请求(即,使用方法调用)。我知道我可以使用 HttpClient 向另一个(或相同的)服务器发出实际的 HTTP 请求:
var httpClient = new HttpClient();
var response = httpClient.GetAsync("http://www.coolurl.com");
但我真正想做的是从同一个 dotnet 项目中的其他位置对一个控制器端点进行 HTTP 调用。这样的事情可能吗?
如果有人感兴趣,用例是创建类似于 feathers.js 的东西,其中 SignalR 集线器自动提供对与项目中已定义的 HTTP 端点相同的功能的访问。所以基本上,如果我有一个已经为 POST /api/things 定义了端点的 HTTP 控制器,我希望能够调用一个 SignalR 集线器方法,例如:
const connection = new signalR.HubConnectionBuilder()
.withUrl("http://www.coolurl.com/realtime")
.configureLogging(signalR.LogLevel.Information)
.build();
let response = await connection.invoke("POST", "/api/things", JSON.stringify({jsonBody: "payload"}))
并通过向 HTTP REST API 发出 AJAX 请求收到与我相同的响应。