none
Web API Rest c# json RRS feed

  • Pregunta

  • Me gustaria saber como puedo definir una Web API Rest en donde tenga un metodo en donde reciba un json y devuelva un json con una serie de datos.

    Por ejemplo tendre la clase telefonos que tiene codigo,nombre,telefono y lo que quiero hacer es definir una web api rest con el siguiente metodo llamado DameDatos

    Valor entrada JSON que recibe un telefono

    Valor salida JSON que devuelve Codigo,Nombre,Telefono en formato JSON

    Un saludo,

    lunes, 8 de enero de 2018 10:02

Respuestas

  • hola

    puede recibir una clase como parametro, sera model binding quien se encargue del mapeo del json que envies

    para retprnar json reemplaza el HttpResponseMessage  por JsonResult

    la unica diferencia en tu caso es que la llamada ajax sera con un dataType: json para que asi el JsonResult serialice los datos que retornes

    de esta forma puede usar un controller de mvc para enviar y recibir json

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 8 de enero de 2018 18:11
  • Hola. Como bien ha indicado Leandro, puedes establecer como parámetro de tu método una clase la cual deserializa a través del Json que envíes.


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    lunes, 8 de enero de 2018 19:40
    Moderador

Todas las respuestas

  • Hola, te recomiendo eches un vistazo a Getting Started with ASP.NET Web API 2 (C#) para que veas cómo se implementan las Api.



    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    lunes, 8 de enero de 2018 14:40
    Moderador
  • Gracias por tu ayuda pero en realidad lo que quiero es sustituir este metodo que tengo definido en mi controller, que es el siguiente:

    [HttpGet]
            public HttpResponseMessage DimeDatos(string tlf)
            {
                Informacion minfo = new Informacion();
                List<Info> info = minfo.DimeDatos(tlf);
                var jsonFormatter = new JsonMediaTypeFormatter();
                            
                jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
                jsonFormatter.SerializerSettings.Culture = new CultureInfo("en-US");

                if (info.Count == 0)
                {
                    throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));
                }
                else
                {
                    return Request.CreateResponse(HttpStatusCode.OK, info, jsonFormatter);
                }
            }

    Lo que quiero hacer es que ese metodo:

    public HttpResponseMessage DimeDatos(string tlf) en vez de recibir un string reciba un JSON ¿como se definiría?

    lunes, 8 de enero de 2018 15:28
  • hola

    puede recibir una clase como parametro, sera model binding quien se encargue del mapeo del json que envies

    para retprnar json reemplaza el HttpResponseMessage  por JsonResult

    la unica diferencia en tu caso es que la llamada ajax sera con un dataType: json para que asi el JsonResult serialice los datos que retornes

    de esta forma puede usar un controller de mvc para enviar y recibir json

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 8 de enero de 2018 18:11
  • Hola. Como bien ha indicado Leandro, puedes establecer como parámetro de tu método una clase la cual deserializa a través del Json que envíes.


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    lunes, 8 de enero de 2018 19:40
    Moderador