50 个 Asp.Net Web API 面试问题与答案 (2025)
Asp.Net Web API 面试题及答案(针对初学者)
1) 什么是 Web API?
WebAPI 是一个框架,可帮助您构建/开发 HTTP 服务。
2) 为什么需要 Web API?是否可以使用 WCF 实现 RESTful 服务?
是的,我们仍然可以使用 WCF 开发 RESTful 服务。但是,有两个主要原因促使用户使用 Web API 而非 RESTful 服务。
- Web API 增强了 RESTful 服务开发中的 TDD(测试数据驱动)方法。
- 如果我们想在 WCF 中开发 RESTful 服务,您肯定需要大量的配置设置、URI 模板、契约和终结点才能使用 Web API 开发 RESTful 服务。
👉 免费 PDF 下载:Asp.Net Web API 面试题及答案 >>
3) 为什么选择 Web API?
- 它用于创建简单的、非 SOAP 的 HTTP 服务
- 它也是创建 Web API 的一种简单方法。使用 WCF REST 服务
- 它基于 HTTP,易于以 RESTful 的方式定义、公开和消耗。
- 它轻量级的架构,非常适合带宽有限的设备,如智能手机。
4) ASP.NET Web API 是否取代了 WCF?
ASP.NET Web API 取代 WCF 这种说法完全是错误的。事实上,它是构建非 SOAP 服务(即纯 XML 或 JSON 字符串)的另一种方式。
5) Web API 的优点是什么?
Web API 的优点是
- OData
- 过滤器
- 内容协商
- 自托管
- 工艺路线
- 模型绑定
6) Web API 支持哪些主要的返回类型?
Web API 控制器操作可以返回以下值
- Void – 它将返回空内容
- HttpResponseMessage – 它将响应转换为 HTTP 消息。
- IHttpActionResult – 内部调用 ExecuteAsync 来创建 HttpResponseMessage
- 其他类型 – 您可以将序列化的返回值写入响应正文
7) Web API 支持哪种协议?
Web App 支持 HTTP 协议。
8) 哪个 .NET 框架支持 Web API?
NET 4.0 及以上版本支持 Web API。
9) Web API 使用以下哪个开源库进行 JSON 序列化?
Web API 使用 Json.NET 库进行 JSON 序列化。
10) 默认情况下,Web API 对所有未捕获的异常发送带有以下哪个状态码的 HTTP 响应?
500 – 内部服务器错误
Asp.Net Web API 面试题(针对有经验者)
11) Web API 中“其他返回类型”的最大缺点是什么?
这种方法的最大缺点是您不能直接返回错误代码,如 404 错误。
12) 如何构造 HtmlResponseMessage?
以下是构造方法,
public class TestController : ApiController { public HttpResponseMessage Get() { HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, "value"); response.Content = new StringContent("Testing", Encoding.Unicode); response.Headers.CacheControl = new CacheControlHeaderValue() { MaxAge = TimeSpan.FromMinutes(20) }; return response; } }
13) 什么是 Web API 路由?
路由是模式匹配,就像在 MVC 中一样。
所有路由都在路由表中注册。
例如
Routes.MapHttpRoute( Name: "ExampleWebAPIRoute", routeTemplate: “api/{controller}/{id} defaults: new { id = RouteParameter.Optional}
14) 什么是 SOAP?
SOAP 是一种用于 Web 服务交互的 XML 消息格式。它允许通过 HTTP 或 JMS 发送消息,但也可以使用其他传输协议。它也是一种基于 XML 的消息协议,用于在计算机之间交换信息。
15) 在 Web API 中使用 REST 有什么好处?
REST 用于减少客户端和服务器之间的数据传输,使其成为移动应用程序的理想选择。Web API 还支持 HTTP 协议。因此,它重新引入了传统的 HTTP 动词用于通信。
16) 如何将 Web API 与 ASP.NET Web Form 结合使用?
Web API 可以与 ASP.NET Web Form 结合使用
这可以分三个简单步骤完成
- 创建一个 Web API Controller,
- 在 Global.asax 的 Application_Start 方法中添加路由表
- 然后您需要进行 jQuery AJAX 调用 Web API 方法并获取数据。
17) 如何将 Web API 的访问限制为特定的 HTTP 动词?
属性编程起着重要作用。可以轻松地将 ASP.NET Web API 方法的访问限制为使用特定的 HTTP 方法调用。
18) 您可以使用 Web API 和 ASP.NET Web Form 吗?
是的,可以使用 Web API 和 ASP.Net Web Form。因为它捆绑了 ASP.NET MVC 框架。但是,它也可以与 ASP.NET Web Form 一起使用。
19) 如何为 ASP.NET Web API Action 分配别名?
我们可以像 ASP.NET MVC 一样为 Web API Action 指定别名,方法是像下面这样使用“ActionName”属性
[HttpPost] [ActionName("SaveStudentInfo")] public void UpdateStudent(Student aStudent) { StudentRepository.AddStudent(aStudent); }
20) TestApi 的含义是什么?
TestApi 是一个 API 的实用库。使用此库,测试人员开发人员可以使用数据结构和算法为 .NET 应用程序创建测试工具和自动化测试。
5年经验的 Web API 面试题
21) 解释异常过滤器?
当控制器方法中发生未处理的异常时,它将被执行。异常的原因可以是任何事情。异常过滤器将实现“IExceptionFilter”接口。
22) 如何从 Action 注册异常过滤器?
我们可以使用以下代码从 Action 注册异常过滤器
[NotImplExceptionFilter] public TestCustomer GetMyTestCustomer(int custid) { //write the code }
23) 如何从 ASP.NET Web API 方法返回 View?
不,我们不能从 ASP.NET Web API 方法返回视图。Web API 创建渲染原始数据的 HTTP 服务。但是,在 ASP.NET MVC 应用程序中也可以做到。
24) 如何全局注册异常过滤器?
可以使用以下代码全局注册异常过滤器-
GlobalConfiguration.Configuration.Filters.Add(new
MyTestCustomerStore.NotImplExceptionFilterAttribute());
25) 解释 REST 和 RESTFUL?
REST 代表 REpresentational State Transfer;这是编写 Web 应用程序的一个全新方面。
RESTFUL:应用 REST 架构概念的术语称为 RESTful 服务。它专注于系统资源以及资源的状态应如何通过 HTTP 协议传输。
26) 给一个 Web API 路由的例子?
Config.Routes.MapHttpRoute( name: "MyRoute,"//route name routeTemplate: "api/{controller}/{action}/{id}",//as you can see "API" is at the beginning. defaults: new { id = RouteParameter.Optional } );
27) 如何在 Web API 中处理错误?
Web API 中有几个类可用于处理错误。它们是 HttpError、Exception Filters、HttpResponseException 和 Registering Exception Filters。
28) ASP.NET Web API 2.0 带来了哪些新功能?
ASP.NET Web API 框架 v2.0 的最新功能如下
- 属性路由
- 跨域资源共享
- 外部身份验证
- Open Web Interface NET
- HttpActionResult
- Web API OData
29) 如何在 Web API 中将访问方法限制为特定的 HTTP 动词?
通过 Attributes(如 HTTP verbs),可以实现 Web API 中的访问限制。
可以将 HTTP 动词定义为属性以限制访问。
示例
[HttpPost] public void Method1(Class obj) { //logic
30) 如何在 Web API 中传递多个复杂类型?
在 Web API 中传递复杂类型的两种方法 –
使用 ArrayList 和 Newtonsoft array
31) 编写代码以在 Web API 中传递 ArrayList?
ArrayList paramList = new ArrayList(); Category c = new Category { CategoryId = 1, CategoryName =“MobilePhones”}; Product p = new Product { Productcode = 1, Name = “MotoG”, Price = 15500, CategoryID = 1 }; paramList.Add(c); paramList.Add(p);
32) 开发或测试 Web API 的工具或 API 名称?
用于 REST API 的 Web 服务测试工具包括
- Jersey API
- CFX
- Axis
- Restlet
33) 什么是 REST?
REST 是一种架构风格。它定义了创建可扩展服务的准则。REST 使用 HTTP 协议及其动词 GET、PUT、POST 和 DELETE。
34) 如何进行 Web API 的单元测试?
我们可以使用 Fiddler 等 Web API 工具进行单元测试。
如果您正在使用,则需要进行一些设置
Fiddler – Compose Tab -> Enter Request Headers -> Enter the Request Body and execute
35) 如何将方法访问限制为特定的 HTTP 动词?
属性编程广泛用于此功能。Web API 还允许使用特定的 HTTP 动词限制对调用方法的访问。还可以将 HTTP 动词定义为方法上的属性。
10年以上经验的 Web API 面试题
36) DelegatingHandler 的用途是什么?
DelegatingHandler 用于 Web API 中,表示路由之前的消息处理程序。
37) 如何从 Action 注册异常过滤器?
我们可以使用以下代码从 Action 注册异常过滤器
[NotImplExceptionFilter] public TestCust GetMyTestCust (int custno) { //write the code }
38) 提供代码片段,展示如何从 HttpError 返回 404 错误?
从 HttpError 返回 404 错误的 कोड
string message = string.Format(“TestCustomer id = {0} not found”, customerid);
return Request.CreateErrorResponse(HttpStatusCode.NotFound, message);
39) 解释从控制器注册异常过滤器的代码片段?
[NotImplExceptionFilter] public class TestCustController : Controller { //Your code goes here }
40) Web API 支持哪种协议?
Web App 支持 HTTP 协议
41) 以下哪个 .NET 框架支持 Web API?
Web API 支持 NET 4.0 版本
42) Web API 使用哪个库进行 JSON 序列化?
Web API 使用 Json.NET 库进行 JSON 序列化。
43) 默认情况下,Web API 对所有未捕获的异常发送带有以下哪个状态码的 HTTP 响应?
500 – 内部服务器错误
44) 解释使用 HttpError 在 Web API 中处理错误的方法?
在 WEB API 中,HttpError 用于在响应正文中抛出错误信息。“CreateErrorResponse”方法也可以与此一起使用,它是“HttpRequestMessageExtension”中定义的扩展方法。
45) 如何全局注册异常过滤器?
我们可以使用以下代码全局注册异常过滤器
GlobalConfiguration.Configuration.Filters.Add (new MyTestCustomerStore.NotImplExceptionFilterAttribute());
46) 如何在 Web API 中处理错误?
Web API 中有几个类可用于处理错误。它们是 HttpError、HttpResponseException、Exception Filters、Registering Exception Filters。
47) WebAPI 相对于 WCF 有什么优势?
WCF 服务使用 SOAP 协议,而 HTTP 从不使用 SOAP 协议。这就是为什么 WebAPI 服务轻量级,因为不使用 SOAP。它还减少了恢复服务所需传输的数据量。此外,它永远不需要过多的配置。因此,客户端可以通过 HTTP 动词与服务进行交互。
48) 说明 MVC 和 WebAPI 之间的区别
MVC 框架用于开发具有用户界面的应用程序。为此,可以使用视图来构建用户界面。
WebAPI 用于开发 HTTP 服务。其他应用程序也可以调用 WebAPI 方法来获取该数据。
49) 谁可以消耗 WebAPI?
任何支持 HTTP 动词(如 GET、PUT、DELETE、POST)的客户端都可以消耗 WebAPI。由于 WebAPI 服务不需要任何配置,因此任何客户端都易于消耗。事实上,即使是像移动设备这样的便携式设备也可以轻松消耗 WebAPI,这无疑是这项技术最大的优势。
50) 如何确保 Web API 只返回 JSON 数据?
为了让 Web API 将返回对象序列化为 JSON 格式并仅返回 JSON 数据。为此,您应该在任何 MVC Web API 项目的 WebApiConfig.cs 类中添加以下代码
//JsonFormatter //MediaTypeHeaderValue Config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json")); 1 2 3 //JsonFormatter //MediaTypeHeaderValue Config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"))
这些面试问题也将有助于您的口试