Publicado en C# - Csharp, MySQL, PHP, Visual Studio

C# Obtener datos desde una REST API en PHP

Para esta ocasión, veremos como ejecutar una API hecha en PHP y desplegar los datos devueltos en nuestra aplicación Windows Form.

Primero que nada, hay que construir la API en PHP con las consultas básicas. Yo tome de ejemplo este blog para crear una REST API en PHP.

Hecho la API, veremos su codigo para este ejemplo:

Este es el método que ejecutaremos:

if (!function_exists('get_employee'))
	{
		function get_employee($id=0)
		{
			global $connection;
			$query="SELECT * FROM employee";

			if($id != 0)
			{
				$query.=" WHERE id=".$id." LIMIT 1";
			}

			$response=array();
			
			$result=mysqli_query($connection, $query);
			while($row=mysqli_fetch_array($result))
			{
				$response[]=$row;
		
			}
			header('Content-Type: application/json');
			echo json_encode($response);
			}
	}

Los datos en la base MySql son estos:

Llamamos la API en el navegador

http://localhost:8080/api/v1/employees/65

Y nos devuelve este arreglo:

[{“0″:”65″,”id”:”65″,”1″:”nombre 2″,”employee_name”:”nombre 2″,”2″:”200000″,”employee_salary”:”200000″,”3″:”40″,”employee_age”:”40″}]

Ahora bien, veremos la forma de traer los datos desde la API nuestra aplicación.

Primero debemos instalar el Nuget Newtonsoft.Json

En este ejemplo, haremos dos llamadas: una que genere una entidad y otra con IEnumerable.

Primero creamos una clase con los atributos de la tabla de Empleados:

public class Empleado
        {
            [JsonProperty("id")]
            public int id { get; set; }
            [JsonProperty("employee_name")]
            public string employee_name { get; set; }
            [JsonProperty("employee_salary")]
            public string employee_salary { get; set; }
            [JsonProperty("employee_age")]
            public string employee_age { get; set; }
        }

Luego agregaremos el metodo que ejecutara la URL de la API

public string GetApiData(string url)
        {

            using (var httpClient = new HttpClient())
            {
                string contentType = "application/json";
                httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(contentType));
                var userAgent = "d-fens HttpClient";
                httpClient.DefaultRequestHeaders.Add("User-Agent", userAgent);

                var response = httpClient.GetStringAsync(new Uri(url)).Result;

                return response;
            }
        }

Ahora veremos el codigo para obtener la entidad con datos desde la API:

        private void button1_Click(object sender, EventArgs e)
        {
            var output = GetApiData("http://localhost:8080/api/v1/employees/" + txtNroEmpleado.Text);
            
            Empleado myobj = JsonConvert.DeserializeObject<Empleado>(output.Substring(1, output.Length - 2));

            if (myobj != null)
            {
                txtEdad.Text = myobj.employee_age;
                txtNombre.Text = myobj.employee_name;
                txtSalario.Text = myobj.employee_salary;
            }
            else
            {
                MessageBox.Show("Sin datos");
            }
        }

Ponemos el numero del Empleados y obtenemos los datos:

Si ponemos otro código que no existe, muestra el mensaje de error:

Para obtener un IEnumerable desde la API es de esta forma y la ejecución es la misma que la anterior:

private void button2_Click(object sender, EventArgs e)
        {
            var output = GetApiData("http://localhost:8080/api/v1/employees/" + txtNroEmpleado.Text);

            IEnumerable<Empleado> result = JsonConvert.DeserializeObject<IEnumerable<Empleado>>(output);

            if (result.Count() > 0)
            {
                txtEdad.Text = result.First().employee_age;
                txtNombre.Text = result.First().employee_name;
                txtSalario.Text = result.First().employee_salary;
            }
            else
            {
                MessageBox.Show("Sin datos");
            }
        }

Damos las gracias a http://www.stackoverflow.com por hacer posible este tutorial 😉

TYDW.-

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s