C#高级:用控制台程序模拟WebAPI处理接口请求信息
1.基础Demo
class Program
{
static void Main()
{
// 创建 HttpListener 实例
HttpListener listener = new HttpListener();
// 添加监听的前缀(模拟 Web API 路径)
listener.Prefixes.Add("http://localhost:18110/api/");
// 启动监听
listener.Start();
Console.WriteLine("API Server is running...");
// 在一个单独的线程中处理请求
ThreadPool.QueueUserWorkItem(HandleRequests, listener);
// 持续运行,直到按下任意键停止
Console.ReadLine();
listener.Stop();
}
// 处理请求的函数
static void HandleRequests(object obj)
{
HttpListener listener = (HttpListener)obj;
while (listener.IsListening)
{
// 获取客户端请求
HttpListenerContext context = listener.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
// 根据请求的 URL 路径做不同的处理
string responseText = string.Empty;
if (request.Url.AbsolutePath == "/api/hello")
{
responseText = "{\"message\":\"Hello, World!\"}";
}
else if (request.Url.AbsolutePath == "/api/greet")
{
// 从查询字符串获取名字参数
string name = request.QueryString["name"] ?? "Guest";
responseText = $"{{\"message\":\"Hello, {name}!\"}}";
}
else
{
responseText = "{\"error\":\"Invalid API endpoint\"}";
}
// 设置响应的内容类型和编码
byte[] buffer = Encoding.UTF8.GetBytes(responseText);
response.ContentType = "application/json";
response.ContentLength64 = buffer.Length;
// 发送响应
response.OutputStream.Write(buffer, 0, buffer.Length);
response.OutputStream.Close();
}
}
}
2.使用Postman测试
http://localhost:18110/api/hello
http://localhost:18110/api/greet?name=susu
3.注意事项
端口不能被重复占用,如果有,请换一个端口
Failed to listen on prefix 'http://localhost:18110/api/' because it conflicts with an existing registration on the machine