如何使用 C# 从其他应用程序使用 Asp.Net WebAPI 端点?
csharpserver side programmingprogramming更新于 2025/4/15 0:22:17
HttpClient 类提供了一个用于从 URL 发送/接收 HTTP 请求/响应的基类。它是 .NET 框架支持的异步功能。HttpClient 能够处理多个并发请求。它是 HttpWebRequest 和 HttpWebResponse 上的一层。HttpClient 的所有方法都是异步的。HttpClient 在 System.Net.Http 命名空间中可用。
让我们创建一个具有 StudentController 和相应操作方法的 WebAPI 应用程序。
Student 模型
namespace DemoWebApplication.Models{
public class Student{
public int Id { get; set; }
public string Name { get; set; }
}
}
Student 控制器
using DemoWebApplication.Models;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace DemoWebApplication.Controllers{
public class StudentController : ApiController{
List<Student> students = new List<Student>{
new Student{
Id = 1,
Name = "Mark"
},
new Student{
Id = 2,
Name = "John"
}
};
public IEnumerable<Student> Get(){
return students;
}
public Student Get(int id){
var studentForId = students.FirstOrDefault(x => x.Id == id);
return studentForId;
}
}
}


现在,让我们创建一个控制台应用程序,我们希望在其中使用上面创建的 WebApi 端点来获取学生详细信息。
示例
using System;
using System.Net.Http;
namespace DemoApplication{
public class Program{
static void Main(string[] args){
using (var httpClient = new HttpClient()){
Console.WriteLine("Calling WebApi for get all students");
var students = GetResponse("student");
Console.WriteLine($"All Students: {students}");
Console.WriteLine("Calling WebApi for student id 2");
var studentForId = GetResponse("student/2");
Console.WriteLine($"Student for Id 2: {students}");
Console.ReadLine();
}
}
private static string GetResponse(string url){
using (var httpClient = new HttpClient()){
httpClient.BaseAddress = new Uri("http://localhost:58174/api/");
var responseTask = httpClient.GetAsync(url);
var result = responseTask.Result;
var readTask = result.Content.ReadAsStringAsync();
return readTask.Result;
}
}
}
}
输出
Calling WebApi for get all students
All Students: [{"Id":1,"Name":"Mark"},{"Id":2,"Name":"John"}]
Calling WebApi for student id 2
Student for Id 2: {"Id":2,"Name":"John"}
在上面的例子中,我们可以看到 WebApi 的端点是从单独的控制台应用程序调用的。
相关文章
打印
下一节:我们如何测试 C# Asp.Net WebAPI? ❯❮ 上一节:What is the use of Authorize Attribute in C# Asp.Net webAPI?

