我可以将ASP.NET MVC3专门用作RESTful Web服务吗?

时间:2011-06-02 15:33:53

标签: web-services asp.net-mvc-3 sencha-touch

我正在为当地教会建立一个只读应用程序。

我们使用Vimeo来托管我们的所有视频,并且我希望将我们的Vimeo视频以及我们的RSS提要集成到我们的网络应用程序中。

应用程序中“内容”的其余部分将是静态“信息”以及联系表单。

我的问题是,仅仅使用ASP.NET MVC3(减去“V”)将JSON驱动到我们的网络应用程序是否犹豫不决?

1 个答案:

答案 0 :(得分:10)

是的,这很有效。只需返回一个JsonResult。

以下是我在制作中使用的一个例子:

 public partial class StudentController : BaseController {
    public StudentController(RESTContext portalContext)
        : base(portalContext) { }

    [HttpGet, Url("organizations/{organizationId?}/students")]
    public virtual JsonResult List(Guid? organizationId) {
        if (organizationId != RESTContext.OrganizationId)
            throw new HttpNotAuthorizedException();

        var query = RESTContext.GetQuery<IQuery<StudentCasesReport>>()
            .Where(x => x.OrganizationId, organizationId)
            .OrderBy(x => x.LastName, SortOrder.Ascending);
        var cases = query.Execute(IsolationLevel.ReadUncommitted);

        return Json(cases, JsonRequestBehavior.AllowGet);
    }

    [HttpGet, Url("organizations/{organizationId?}/students/{studentId?}")]
    public virtual JsonResult Get(Guid? organizationId, Guid? studentId) {
        if (studentId.IsNull())
            throw new HttpNotFoundExecption();

        if (organizationId != RESTContext.OrganizationId)
            throw new HttpNotModifiedException();

        var query = RESTContext.GetQuery<IQuery<StudentCasesReport>>()
            .Where(x => x.OrganizationId, organizationId)
            .Where(x => x.StudentCaseId, studentId)
            .OrderBy(x => x.LastName, SortOrder.Ascending);
        var cases = query.Execute(IsolationLevel.ReadUncommitted).FirstOrDefault();

        if (cases.IsNull())
            throw new HttpNotFoundExecption();

        return Json(cases, JsonRequestBehavior.AllowGet);
    }
}