none
Web Api Rest .NET con AngularJs RRS feed

  • Pregunta

  • Hola, buen día, tengo una pequeña consulta.

    Tengo una Web Api Rest con métodos asi,

    public IHttpActionResult Get()
            {
                return Ok(_divisionGeografica.ConsultaMunicipios());
            }

    esos los consumo desde angularJs asi

    var _getDivGeografica = function(){
            return $http.get(serviceBase + 'api/DivisionGeografica')
              .then(function(results){
                return results;
              });
          };

    El problema es que ahora hice un método Get que recibe como parámetro la entidad

    public IHttpActionResult Get(Empleado empleado)
            {
                return Ok(_empleado.ConsultaEmpleado(empleado));
            }

    y no he logrado consumirla, pues no se como enviar esa entidad desde angularJs, como seria para que mi api rest reciba esos datos?

    viernes, 26 de junio de 2015 14:44

Respuestas

  • hola

    si revisas la doc de angular

    https://docs.angularjs.org/api/ng/service/$http

    veras que puedes definir un parametro de "data" para enviar el json que represente la entidad

    igualmente en un GET no se suele enviar una entidad completa, por lo general se envia un id o codigo de tipo simple como string o int

    definir un tipo complejo es visto por lo general en un POST

    AngularJS passing data to $http.get request

    ----

    tambien aconsejo analices el uso de $resource

    para acciones REST es mucho mejor

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta CrissR viernes, 26 de junio de 2015 15:01
    • Desmarcado como respuesta CrissR viernes, 26 de junio de 2015 15:04
    • Marcado como respuesta CrissR viernes, 26 de junio de 2015 15:04
    viernes, 26 de junio de 2015 14:55
  • Hola,

    En la WebAPi debes indicar si esperas el parámetro desde la URL o en el Contenido del HttpRequest usando los atributos [FromUri] o [FromBody],

    Dado que es un tipo complejo, deberías enviarlo en el contenido, sino expondrás todos los datos desde la URL

    ejemplo: http://sitio.com/api/proteger/?dato={usuario:algguien,password:pass,fecha:now, etc}

    Por otro lado, ¿Por qué sería necesario enviar todo el objeto para hacer un GET? no puede ser suficiente con solo algunos valores?

    Saludos,

    • Marcado como respuesta CrissR martes, 30 de junio de 2015 15:50
    viernes, 26 de junio de 2015 18:30

Todas las respuestas

  • hola

    si revisas la doc de angular

    https://docs.angularjs.org/api/ng/service/$http

    veras que puedes definir un parametro de "data" para enviar el json que represente la entidad

    igualmente en un GET no se suele enviar una entidad completa, por lo general se envia un id o codigo de tipo simple como string o int

    definir un tipo complejo es visto por lo general en un POST

    AngularJS passing data to $http.get request

    ----

    tambien aconsejo analices el uso de $resource

    para acciones REST es mucho mejor

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta CrissR viernes, 26 de junio de 2015 15:01
    • Desmarcado como respuesta CrissR viernes, 26 de junio de 2015 15:04
    • Marcado como respuesta CrissR viernes, 26 de junio de 2015 15:04
    viernes, 26 de junio de 2015 14:55
  • Hola Leandro, es que justo asi lo hago, envio el json pero la api no lo toma.

    var _getEmpleado = function(){
            return $http({
              url: serviceBase + 'api/Empleado',
              method: "GET",
              data: empleadoData });//{user_id: user.id}
          }

    viernes, 26 de junio de 2015 15:05
  • >>envio el json pero la api no lo toma.

    pero lo estaras generando de forma correcta ? digo ese json define las propiedades que mapean con las de la clase Empleado


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 26 de junio de 2015 15:07
  • >>envio el json pero la api no lo toma.

    pero lo estaras generando de forma correcta ? digo ese json define las propiedades que mapean con las de la clase Empleado


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    Si, las defino todas, tal cual esta creada la entidad, pero igual no la toma.

    Lo solucione pero no como quería, no pude recibir la entidad, me todo fue dejar en la Web Api .NET me toco cambiar el método para que recibiera parámetros, recibir todos esos parámetros que componen la entidad no se ve bien pero fue la única forma en que me funciono.

    • Editado CrissR viernes, 26 de junio de 2015 15:32
    viernes, 26 de junio de 2015 15:28
  • Hola,

    En la WebAPi debes indicar si esperas el parámetro desde la URL o en el Contenido del HttpRequest usando los atributos [FromUri] o [FromBody],

    Dado que es un tipo complejo, deberías enviarlo en el contenido, sino expondrás todos los datos desde la URL

    ejemplo: http://sitio.com/api/proteger/?dato={usuario:algguien,password:pass,fecha:now, etc}

    Por otro lado, ¿Por qué sería necesario enviar todo el objeto para hacer un GET? no puede ser suficiente con solo algunos valores?

    Saludos,

    • Marcado como respuesta CrissR martes, 30 de junio de 2015 15:50
    viernes, 26 de junio de 2015 18:30