PATCH y OPTIONS: nuevos verbos HTTP para métodos de acción en ASP.NET MVC 4

21. November 2012 00:01 by Oscar.SS in Desarrollo Web  //  Tags:   //   Comments (0)

En ASP.NET MVC 3 teníamos a nuestra disposición los atributos HttpGetAttribute, HttpPostAttribute, HttpPutAttribute, HttpDeleteAttribute y HttpHeadAttribute. Estos atributos, que nos permiten filtrar que verbos HTTP aceptarán nuestros métodos de acción, son tratados como una enumeración de flags dentro de la clase AcceptVerbsAttribute. Veamos por ejemplo la implementación del atributo para el verbo POST.

        [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
        
public sealed class HttpPostAttribute : ActionMethodSelectorAttribute
        {
            
private static readonly AcceptVerbsAttribute _innerAttribute = new AcceptVerbsAttribute(HttpVerbs.Post);

            public override bool 
IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)
            {
                
return _innerAttribute.IsValidForRequest(controllerContext, methodInfo);
            
}
        }

Se crea una instancia de la clase AcceptVerbsAttribute y se le pasa al constructor el valor para este verbo de la enumeración HttpVerbs. El constructor llama a su vez al método AcceptVerbsAttribute.EnumToArray() para construir la lista de verbos HTTP que soportará nuestro método de acción. A continuación podéis ver la implementación de este método y los nuevos verbos añadidos en ASP.NET MVC 4.

        private static void AddEntryToList(HttpVerbs verbs, HttpVerbs match, List<string> verbList, string entryText)
        {
            
if ((verbs & match) !0)
            {
                verbList.Add(entryText)
;
            
}
        }

        
internal static string[] EnumToArray(HttpVerbs verbs)
        {
            List<
string> verbList = new List<string>();

            
// ASP.NET MVC3
            
AddEntryToList(verbs, HttpVerbs.Get, verbList, "GET");
            
AddEntryToList(verbs, HttpVerbs.Post, verbList, "POST");
            
AddEntryToList(verbs, HttpVerbs.Put, verbList, "PUT");
            
AddEntryToList(verbs, HttpVerbs.Delete, verbList, "DELETE");
            
AddEntryToList(verbs, HttpVerbs.Head, verbList, "HEAD");
            
            
// New in ASP.NET MVC4
            
AddEntryToList(verbs, HttpVerbs.Patch, verbList, "PATCH");
            
AddEntryToList(verbs, HttpVerbs.Options, verbList, "OPTIONS");

            return 
verbList.ToArray();
        
}

La manera en la que utilizamos estos nuevos atributos como era de esperar es la misma, tenemos dos enfoque principales, especificando en el constructor del atributo AcceptVerbsAttribute el tipo de verbo por medio de la enumeración HttpVerbs, o directamente por medio de los atributos HttpPatchAttribute y HttpOptionsAttribute. Esta última opción como podemos observar a continuación es más rápida de escribir y fácil de leer.

        [HttpPatch][HttpOptions]
        
public ActionResult Index()
        {
            ViewBag.Message 
"Modify this template to jump-start your ASP.NET MVC application.";

            return 
View();
        
}

        [AcceptVerbs(HttpVerbs.Patch)]
        [AcceptVerbs(HttpVerbs.Options)]
        
public ActionResult Index()
        {
            ViewBag.Message 
"Modify this template to jump-start your ASP.NET MVC application.";

            return 
View();
        
}

El verbo HTTP PATCH se utiliza para modificar un recurso HTTP. Digamos que con el verbo HTTP PUT podíamos crear o reemplazar un recurso ya existente, pero no modificarlo. Este es el propósito del verbo HTTP PATCH. Si el lector quiere saber más le recomiendo este enlace.

En cuanto al verbo HTTP OPTIONS permite al cliente saber que opciones, requerimientos y capacidades del servidor están asociadas a la comunicación entre el cliente y el servidor. Si deseas profundizar un poco más sobre este verbo, puedes hacerlo aquí.

El libro que me hubiera gustado y el libro que me ha gustado

10. November 2012 08:00 by Oscar.SS in Formación, Lenguajes  //  Tags: ,   //   Comments (0)

El título que he elegido para la reseña de este libro es una simplificación de "El libro que me hubiera gustado cuando empezaba a programar en JavaScript y el libro que me ha gustado ahora que creía que sabía programar en JavaScript". Y es que el autor ha conseguido en 368 páginas de contenido (quitando índices y de más) que el libro sea un completo manual de programación con JavaScript tanto para los que empiezan como para los que ya tienen cierta experiencia.

 

Título: Fundamentos de JavaScript y AJAX
Autor: José Manuel Alarcón
Editorial: Krasis Press
I.S.B.N.: 978-84-939659-2-1
Fecha publicación: 2012
Nº páginas: 397
Nº capítulos: 12 + apéndice
WebSite: CampusMVP

 

Elogios

Los primeros 7 capítulos están dedicados a los fundamentos del lenguaje en sí. Es realmente loable como el autor consigue en tan solo 140 páginas darte todos los conocimientos y herramientas necesarias para comenzar a programar JavaScript conociendo a fondo conceptos como tipos de datos, variables, funciones, operadores, estructuras de control, matrices, y manejo de cadenas de texto y fechas. Incluso el autor se permite el lujo de dar algunas referencias históricas y anécdotas que amenizan la lectura.

En mi opinión esta es la parte más complicada de un libro, en la que se explican los fundamentos, dado que si el lector la encuentra tediosa o difícil de entender, posiblemente abandone la lectura del mismo. Este libro aprueba este examen con un sobresaliente.

Por motivos personales tenía muchas expectativas sobre el capítulo 8. La programación orientada a objetos, el concepto más complicado de entender y también de explicar en este lenguaje, se describe con un estilo muy didáctico y ameno. Sinceramente puedo decir, que antes de comenzar la lectura yo tenía unos fuertes conocimientos sobre el tema y aún así he aprendido no pocas recetas útiles.

Los capítulos 10 y 11, eventos y AJAX respectivamente, han sido con los que más he disfrutado. Tienen un montón de ejemplos prácticos que el programador seguro va a necesitar en su día a día. 

El capítulo 12, errores comunes y depuración, es exquisitamente pragmático. Sin duda el programador encontrará muy interesante sobre todo la sección dedicada al estudio a fondo de la herramienta de depuración del explorador Chrome.

Y por si fuera poco todo lo anterior, todavía el libro tiene un apéndice sobre expresiones regulares que a pesar de ser un tema bastante peliagudo lo he encontrado muy bien explicado y ordenado.

 

Críticas

La verdad es que realmente no tengo ninguna crítica como tal, pero sí tendría que destacar algo en esta sección es que el capítulo 9 dedicado a los fundamentos del BOM y el DOM me ha resultado más aburrido de leer que el resto. Bueno, siendo totalmente rigurosos el capítulo comienza con una reseña histórica de gran valor y didáctica pero después se convierte en una colección de propiedades y definiciones de estas. Aunque no veo como se podría hacer de otro modo.

Y si me pongo muy puntilloso, en el capítulo 8, dedicado a la programación orientada a objetos, en la parte que habla de la herencia con prototipos, quizás he echado en falta algo más de código y menos literatura.

 

Resumiendo

Como comentaba al comienzo de esta reseña, tanto si no has utilizado nunca este lenguaje como si tienes experiencia con él, encontrarás, ejemplos, trucos y conceptos de gran valor. Y dejarme que me repita, en tan solo 368 páginas de contenido real. Esto es lo que más me ha sorprendido. ¡¡Un trabajo sencillamente espectacular!!

Recent Comments

Comment RSS

Month List