MVC控制器到API控制器
本文关键字:控制器 API MVC | 更新日期: 2023-09-27 18:15:36
我已经写了一个MVC控制器。现在,我必须将MVC控制器的相同动作方法编码到新的API控制器。
在API控制器中放置一个方法需要做哪些更改?
例如。MVC控制器代码
[HttpGet]
[EAuthorize(xyz)]
public ActionResult Trans()
{
var user = (User)WebSession.CurrentUser;
var mTrans = mTransLMgr.InitializeMTrans(user.currentSelectedEntity.Value);
mTransLMgr.AccNum = TController.GetAccountNumberBasedOnPrivilage(x,y);
return View(mTransLMgr);
}
如果我必须在API控制器中实现相同的方法,我将必须实现哪些更改?方法应该返回JSON。
不能将MVC控制器转换为API控制器。这两种类型都来自不同的基类。在ASP。. NET MVC中的控制器必须派生自Controller
类,而在asp.net中。一个控制器的基类是一个ApiController
。在这两种情况下,您都继承自定义控制器库,但这个必须继承平台提供的原始基本控制器。
在ASP。. NET WEB API,结果格式由http header
上提供的content-type
提供。因此,您的客户机应用程序必须在content-type
属性和ASP中提供application/json
。NET WEB API将以这种格式为您序列化。示例:
public HttpResponseMessage Get(int id)
{
var user = (User)WebSession.CurrentUser;
var mTrans = mTransLMgr.InitializeMTrans(user.currentSelectedEntity.Value);
mTransLMgr.AccNum = TController.GetAccountNumberBasedOnPrivilage(x,y);
// return ok with the model serialized on the response body
Request.CreateResponse(HttpStatus.Ok, mTransLMgr);
}
我不确定你在WebSession.CurrentUser
上有什么,但是如果你在HttpContext.Session[key]
上使用密钥,你就不能这样做,因为ASP。Net是无状态的,您没有会话。
对于EAuthorize
,您必须在http头中实现身份验证。您可以使用基本身份验证来实现这一点,这是Rest应用程序的默认行为。我强烈建议您阅读文章《ASP中的基本身份验证》。NET Web API,并详细了解如何做到这一点。
你的问题太宽泛了,也许其他用户可以关闭它。我认为这是很好的你尝试实现,并要求一些帮助张贴你的代码,你已经尝试过。