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);
}
}
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. –
Una de las cosas buenas de REST .... y MVC. – ckramer
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/ –