【发布时间】:2018-05-09 13:27:40
【问题描述】:
我正在开发一个使用 WebAPI 的 MVC5 站点。我已经定义了一个帮助类来处理传入请求的一些日志记录,可以为任何需要记录有关所发出请求的数据的操作调用该类。 (主要是 IP 地址、引荐来源网址、url 和用户代理,以及一些标头值。)而且我遇到了问题...
Controller 类有一个我使用的“HttpRequestBase”类型的属性请求。我曾假设 ApiController 中的 Request 属性将是相同的类型,但不,它是“HttpRequestMessage”。
这很烦人,所以我想知道我的项目中是否真的需要 WebAPI。我想使用 WebAPI 返回网站本身使用的各种数据。为什么不使用常规控制器而不是 ApiController?在单个项目中使用 ApiController 和 Controller 有什么好处?
请不要就为什么 WebAPI 比使用常规控制器更好(或不更好)发表意见。我需要知道使用 WebAPI 在控制器旁边有哪些技术优势,而不仅仅是使用控制器!
【问题讨论】:
-
如果你有MVC,基本上就不需要使用Web API了。 Web API 更适合那些没有整个 MVC 库作为依赖项的服务。
-
我猜 Logger 辅助类是一个静态类是否正确,它有某种 Log(HttpRequestBase) 方法?以及您如何准确调用 Logger 方法?请向我们提供代码示例。
-
我不认为这是基于意见的。
ApiController和Controller之间存在技术差异。 -
正如 Camilo 所说,两者之间存在明显的技术差异,因此与意见无关。这与两种技术背后的非常不同的实现有关,尽管它们看起来非常相似。使用 ApiController 比使用普通的 ApiController 有什么好处?从技术上讲...
-
差不多了,@orel Eraki。不过,它不是静态的。如果同时发出两个或多个请求,静态类会导致问题。调用 ActionResult 方法,使用它获得的请求创建一个辅助对象,并验证结果以查看操作是否有效。我正在跟踪数据库中的更改,因此帮助程序类会将数据库中的任何更改链接到导致更改的请求。 (出于历史目的。)
标签: c# asp.net asp.net-web-api asp.net-mvc-5