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控制器

不能将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,并详细了解如何做到这一点。

你的问题太宽泛了,也许其他用户可以关闭它。我认为这是很好的你尝试实现,并要求一些帮助张贴你的代码,你已经尝试过。