2011-06-02 16 views
5

Estoy construyendo una aplicación READ ONLY para nuestra iglesia local.¿Puedo usar ASP.NET MVC3 exclusivamente como un servicio web RESTful?

Usamos Vimeo para alojar todos nuestros videos, y me gustaría integrar nuestros vids de Vimeo, así como nuestro RSS en nuestra aplicación web.

El resto del "contenido" en la aplicación será "información" estática, así como un formulario de contacto.

Mi pregunta es, ¿es kosher SÓLO usar ASP.NET MVC3 (menos la "V") para conducir el JSON a nuestra aplicación web?

Respuesta

10

Sí, esto funciona genial. Solo devuelve un JsonResult.

Este es un ejemplo que uso en la producción:

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); 
    } 
} 
+0

Esto es exactamente lo que estaba pensando. Soy nuevo en los servicios web, por lo que estoy un poco preocupado por las mejores prácticas. –

+0

Una de las cosas buenas de REST .... y MVC. – ckramer

+1

También necesitará manejar 404s y otros códigos de estado. MVC3 ahora le da la opción de devolver un código de estado al usuario. Recomendaría el proyecto AttributeRouteMapper para controlar las rutas en el nivel del controlador como atributos. Lo hace mucho más fácil de mantener. http://maproutes.codeplex.com/ –

Cuestiones relacionadas