rest – 从MVC4控制器中使用Web API?

我目前正在一个网站上工作,我对存储库模式与存储库和管理器之间的关注点进行了很好的分离.现在,我正在尝试实现一个Web API,因为我将来可以从各种客户端使用它,从而大大受益.由于我对REST服务还不熟悉,因此我无法使用正确的程序从我的MVC4应用程序中的服务中使用我的Web API,然后在我的MVC控制器中使用该服务.我不想在每次调用API时都使用knockout.

我的Web API看起来像这样(简化):

public class UserController : ApiController
{
    private readonly IUserManager _manager;

    public UserController(IUserManager manager)
    {
        this._manager = manager;
    }

    // GET api/user
    public IEnumerable<User> Get()
    {
        return _manager.GetAll();
    }

    // GET api/user/5
    public User Get(int id)
    {
        return _manager.GetById(id);
    }

    // POST api/user
    public void Post(User user)
    {
        _manager.Add(user);
    }

    // PUT api/user/5
    public void Put(User user)
    {
        _manager.Update(user);
    }

    // DELETE api/user/5
    public void Delete(User user)
    {
        _manager.Delete(user);
    }
}

我本质上想创建一个服务来使用我的Web API:

public class UserService : IUserService
{
    ....Implement something to get,post,put,and delete using the api.
} 

所以我可以在我的mvc控制器中使用它:

public class UserController: Controller
{
    private readonly IUserService _userService;

    public UserController(IUserService userService)
    {
        this._userService = userService;
    }
    //And then I will be able to communicate with my WebAPI from my MVC controller
}

我知道这是可能的,因为我已经看到它在一些工作场所完成但是很难找到关于这个的文章,我只找到了解释如何通过淘汰消费web API的文章.任何帮助或提示将不胜感激.

最佳答案 看看这里的实现:
https://github.com/NBusy/NBusy.SDK/blob/master/src/NBusy.Client/Resources/Messages.cs

它基本上利用HttpClient类来使用Web API.但需要注意的是,所有响应都包含在该示例中的自定义HttpResponse类中.您不需要这样做,只需使用检索到的DTO对象作为返回类型或原始HttpResponseMessage类.

点赞