Crea un API REST en PHP, en menos 10 minutos.

Поділитися
Вставка
  • Опубліковано 22 вер 2024
  • Ahora veremos cómo crear un RESTful web service utilizando PHP y MySQL para consultar y guardar la información. Para que puedas probar este código debes tener instalado PHP y MySQL.
    Para tu comodidad puedes descargar todo el código desde este enlace
    my.pcloud.com/...
    Antes que nada debes de tener claro que es un web service RESTful, si aun tienes dudas, puedes leer un articulo sobre RESTful haciendo clic aquí.
    www.codigonara...
    Para este ejemplo vamos a asumir que tenemos un blog y necesitamos un servicio RESTful para acceder a los artículos y editarlos, entonces nuestro servicio va realizar estas operaciones:
    + Listar todos los posts (artículos de un blog)
    + Mostrar un post
    + Agregar un post
    + Eliminar un post
    + Actualizar uno o más campos de un post
    Transcripción:
    Primero necesitamos una base de datos, vamos a utilizar MySql y phpMyAdmin.
    00:00:07.700
    Primero ingresamos y vamos a crear una nueva base de datos, la vamos a llamar blog y algo muy importante es que aquí en cotejamiento vamos a elegir utf8.
    00:00:23.650
    Esto va a servir para que podamos ingresar "ñ" y tildes y que no se vean esos caracteres extraños. Creamos la base de datos y ahora necesitamos una tabla, en el video vas a encontrar un archivo comprimido. Al abrirlo, vas a ver un archivo llamado scriptdb.sql, lo abres y copias todo su contenido.
    00:00:47.300
    Ahora regresas a phpMyAdmin y haces clic en esta pestaña sql y ahora vas a pegar aquí todo el contenido del archivo y haces clic en continuar. Listo esto ha creado una nueva tabla, la vemos acá y aquí está su estructura.
    00:01:10.600
    Tenemos un ID, un título, un estado, un contenido y el usuario dueño del post.
    00:01:19.400
    Ahora veamos algo que te va a servir para crear cualquier servicio Rest en php, primero vamos a ir a nuestro directorio www y vamos a crear una carpeta, le voy a colocar rest, puede ser cualquier nombre que tú quieras pero tiene que estar en el directorio www. Ahora abres tu editor de texto favorito, en mi caso voy a utilizar Atom y vamos a abrir ese folder que acabo de crear o carpeta y vamos a crear un archivo llamado index.php, ahora vamos a abrir unas etiquetas de php y vamos a utilizar este código, este código va a servir para regresar una respuesta http con un código, esto es básico para mostrar la respuesta de el resultado de la ejecución de tus servicios RESTful, para probarlo, vamos abrir un navegador y escribimos aquí localhost, una barra inclinada y el nombre de tu carpeta, que mi caso es Rest y aquí estamos viendo un código de error 400, qué es exactamente lo que estábamos queriendo hacer. Como vemos en el código aquí utilizamos la función header y entre paréntesis y comillas, vamos a regresar un estado http en este caso envío 400, qué es el error que acabamos de ver. Ahora vamos a cambiarlo y colocamos 500 y vamos a probar otra vez actualizamos.
    00:03:02.900
    Y como vemos aquí está el error 500. Ahora veamos cómo mostrar un resultado satisfactorio, qué es el estado 200. Volvemos a cargar y se ve una página en blanco, vamos a hacer clic derecho y elegimos esta opción.
    00:03:24.200
    Y aquí está las herramientas para desarrollador web. Vamos a ir a Network y ahora tenemos que cargar de nuevo la página.
    00:03:35.700
    Y como vemos aquí está el estado que regresamos qué es el 200, eso significa que todo está bien. Ahora veamos otra función que te va a servir, es cómo saber qué método está solicitando. Lo hacemos con este "if" y aquí tenemos una variable global que server, el método que se está utilizando y aquí lo comparamos con algo, por ejemplo, post, también podríamos utilizar aquí get, put, delete, etcétera. Aquí vamos a colocar el código que corresponde al tipo de llamado dependiendo del método que se está utilizando, si es post, put, delete, etcétera. Muy bien con esto tenemos la base para poder responder a una petición de nuestro servicio Rest, ahora vamos a lo más importante vamos a crear el servicio Rest para esto copiamos esa carpeta que se llama src, que viene en el archivo comprimido que descargaste vamos a copiarlos y los pegamos en la carpeta de tu directorio www, ahora regresamos a tu editor de texto y cómo ves aquí están estos archivos, vamos a ver uno por uno primero está el archivo config.php que tiene una variable de tipo array, esa tiene estos datos que es el Host en mi caso es localhost, tiene el usuario de la base de datos y la clave de la base de datos y el nombre de nuestra base de datos. Ahora está un archivo de utilidades, aquí hay una función que se llama Connect.
    ........

КОМЕНТАРІ • 83

  • @robertchurion
    @robertchurion 3 роки тому +4

    Excelente forma de explicar, más claro que nunca, Infinitos agradecimientos, una manera muy buena para quienes medio programamos.

  • @ArgentinaMutualista
    @ArgentinaMutualista 4 роки тому +4

    MUCHAS GRACIAS!!!!! , lo has explicado excelentemente, claro y preciso,
    No dejes de generar más videos, lo haces muy bien!!
    Gracias otra vez!

  • @tayiogar
    @tayiogar 3 роки тому

    Excelente al grano sin tanta vuelta me gusto gracias.

  • @AndresGomez-ku1qe
    @AndresGomez-ku1qe 5 місяців тому +1

    Hola, tengo una duda, estoy aprendiendo php pero me surge la duda de que diferencia existe entre hacer una api para consultar o meter datos en la tabla y/o hacer directo la consulta o un append.
    Saludos.

  • @TecnoTubeTutorials
    @TecnoTubeTutorials 3 роки тому +8

    Explicas bastante bien bro me subscribo

  • @andresfcuellarc
    @andresfcuellarc 5 років тому +1

    Con que claridad explicas .. genial!

    • @CodigoNaranja
      @CodigoNaranja  5 років тому +1

      Gracias, me alegra que te haya gustado el canal

  • @pilates2024
    @pilates2024 7 місяців тому

    Hola, gracias por la información.
    Tengo una duda en cuestión del método de actualizar, no comprendo como mandar los valores si solo tiene un arreglo $fields.
    Te agradecería si me pudieses aclarar esa duda por favor, saludos.

  • @albertobermejo8527
    @albertobermejo8527 3 роки тому +1

    Buenas, muchas gracias por el tutorial quedo todo muy claro, para habilitar CORS? como se haria? muchas gracias

  • @judaleba
    @judaleba 3 роки тому +6

    si estan pasando esta api a produccion en un cpanel. tienen que agregarle debajo de los "include" del archivo post.php esto:
    header('Access-Control-Allow-Origin: *');
    header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
    header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
    pues hay servidores que no permiten la accesibilidad remota

  • @alexdevorigin1
    @alexdevorigin1 3 роки тому +1

    Amigo pero el put recibe get url o Params no url

  • @DoñaPaulaCocina
    @DoñaPaulaCocina 5 років тому

    Muy bueno el video

  • @backlabagency3072
    @backlabagency3072 4 роки тому +1

    Me gusto mucho tu video :) sería bueno que explicaras los demás métodos veo que algunos tienen dudas sobre eso

  • @ivanvillanuevavillalon6705
    @ivanvillanuevavillalon6705 Рік тому +1

    Gran video amigo, me sirvió mucho😁

  • @jaimemelus9324
    @jaimemelus9324 Рік тому +1

    Muy buen vídeo, un ejemplo muy bueno.

  • @503Maury
    @503Maury 4 роки тому +5

    Si uso xammp sería en la carpeta htdocs verdad?

  • @YouCaperuchipi
    @YouCaperuchipi 4 роки тому +1

    Super.. mil gracias

  • @ezequiel8331
    @ezequiel8331 Рік тому +1

    Muy bueno, gracias!!!

  • @gonzaloloyolav.9085
    @gonzaloloyolav.9085 Рік тому +1

    me ayudo un monton muchas gracias

    • @CodigoNaranja
      @CodigoNaranja  Рік тому +1

      Me alegra que te haya gustado el video, gracias

  • @javiermolinawlf9408
    @javiermolinawlf9408 5 років тому +2

    Muchas gracias por el aporte, seria genial que nos ayudes completando la opcion PUT, porque en mi caso no me funciona con POSTMAN

    • @davidbuenano8962
      @davidbuenano8962 5 років тому +3

      Me pasaba lo mismo, si funciona, pero se deben enviar los datos a actualizar como parámetros: localhost/example/post.php?id=4&content=Prueba para actualizar (osea al probar en el postman, debe enviarse como en Params)

    • @MrRicardoLlanos
      @MrRicardoLlanos 4 роки тому

      @@davidbuenano8962 A mi me pasa todo lo contrario, en el Metodo GET no me muetra nada.

  • @AlbertoMarun
    @AlbertoMarun 2 роки тому

    Buenos dias, no veo la autenticacion en este API, o si tienen un video donde lo explique ya que siempre una api pide autenticacion o token etc

  • @salazarwalter
    @salazarwalter 3 роки тому +1

    Un pregunta, Es posible que hallan acceso simultáneos? O de eso se encarga el Apache? Esta bueno el video. Gracias

    • @CodigoNaranja
      @CodigoNaranja  3 роки тому

      Hola, si se puede tener accesos simultaneos y si Apache es quien se encarga de eso. Pero Apache no es muy bueno, es mucho mejor usar nginx, cuando tenia mi blog en Apache comenzo a sentirse muy lento, pero con solo cambiar a Nginx mejoro muchisimo.

  • @kevingaviria4059
    @kevingaviria4059 4 роки тому +1

    Gracias amigo me sirvió mucho

    • @CodigoNaranja
      @CodigoNaranja  4 роки тому

      Me alegra que te haya servido y gracias por el comentario

  • @FieLSaSo
    @FieLSaSo 5 років тому +1

    esta muy bueno y practico.... gracias

  • @siracusaapp3890
    @siracusaapp3890 4 роки тому +1

    Gracias!! Dios lo bendiga

  • @danielestuardorivasherrera7750

    Si quiero enviarle un RAW Json y no un form data, cómo podría hacerlo?, saludos.

  • @noelugo1963
    @noelugo1963 Рік тому

    Muchas gracias por tu video, te dejo mi Like y suscripción, sigue así. Saludos

  • @sergiosaavedra8729
    @sergiosaavedra8729 4 роки тому

    Excelente, super bien, funciona Impecable

  • @carlosalexander4947
    @carlosalexander4947 2 роки тому

    si tengo el servidor localhost:8080 ??? en cuales lineas de codigo cambia

  • @beta3641
    @beta3641 3 роки тому

    Excelente video explicativo...podrías hacer los codigos de error en la Api..por fa

  • @softfarr
    @softfarr 4 роки тому

    Cordial saludo. Excelente video. Cuál sería el comando para solicitarle a la API un GET/POST desde un navegador, o una app en python/C# y no desde postman? Gracias por compartir sus conocimientos.

  • @marvinodaircorralesalvarez3622
    @marvinodaircorralesalvarez3622 3 роки тому

    mil gracias, excelente video, se gano un suscriptor mas

  • @gerardomorales18
    @gerardomorales18 4 роки тому

    Muchisimas gracias!!! Excelente video

  • @christopherh.3550
    @christopherh.3550 4 роки тому

    Disculpen mi ignorancia, esto es un RestFull? ( es que vi otros con frameworks pero no se que diferencia hay ) aparte, como sería esto de la mano con Ajax?

  • @miguelaguilar2377
    @miguelaguilar2377 3 роки тому

    Muchas gracias, por fin me quedo claro como es que funciona esto, pero necesito una ayuda urgente, por que me funciona con algunas tablas y con otras no, me refiero que en algunas tablas solo funciona con el get id, pero no hace el select *, o hay un límite de registros y columnas que puede mostrar, lo busque en google pero nada menciona eso, muchas gracias de antemano

  • @j.armandogarciaarroyo4516
    @j.armandogarciaarroyo4516 4 роки тому +2

    Que tal amigos, a mi me estaba pasando que mis registros tenían "ñ" o tildes, y por lo tanto no me traia registros en mi consulta, esto lo solucione poniendo al inicio
    $sql = $dbConn->prepare("SET NAMES 'utf8'");
    $sql->execute();

    por que mi base tenia otro cotejamiento.

  • @sistemasyusatorreon1685
    @sistemasyusatorreon1685 3 роки тому

    la riegas no dices que ya esta actualiuzado la pagina de pruebas

  • @entuface
    @entuface 4 роки тому +1

    No olvidar que el campo status solo puede tener dos valores: draft y published

  • @LuisRodriguez-vg9dw
    @LuisRodriguez-vg9dw 5 років тому

    excelente video, muy bien explicado, sigue adelante.

  • @Guerson91
    @Guerson91 4 роки тому

    amigo gracias, y gracia spor le codigo necesitaba algo simple dime si esto puedo subirlo a hostgator

  • @ricardo130695
    @ricardo130695 5 років тому

    Muchas gracias :D

  • @lyeell6989
    @lyeell6989 4 роки тому

    Muchas gracias por tu ayuda

    • @CodigoNaranja
      @CodigoNaranja  4 роки тому

      Gracias por comentar, me alegro que te gustara mi video

  • @Lucky-ys1rh
    @Lucky-ys1rh 4 роки тому

    Porque no puedo entrar a esa página? Me dice que localhost ha rechazado mi conexión

  • @CodeCraftZone
    @CodeCraftZone 2 роки тому

    Parece sencillo pero cuando tengas que sacar información de tablas relacionales ahí se complica al usar los INNER JOIN en el Api rest y hacerlo de forma dinámica ya son palabras mayores , porque sólo muestran lo fácil.

    • @CodigoNaranja
      @CodigoNaranja  2 роки тому

      Si, esto es para hacer el servicio, ya lo que tu mencionas es programación normal de php que haces regularmente al crear aplicaciones.

  • @nickerpasco4247
    @nickerpasco4247 5 років тому +3

    Muchas Gracias AMigo podrías ayudarnos en Testear el PUT ? No me sale :(

    • @NchSky
      @NchSky 3 роки тому

      Estoy en las mismas bro, lo lograste? jaja

    • @NchSky
      @NchSky 3 роки тому

      pasó 1 año pero nunca está demás preguntar omegalul

    • @JorgePoolAguilarRisco
      @JorgePoolAguilarRisco 3 роки тому

      en mi caso mi campo id se llama ids y es de tipo bigint, le quite la comilla simple al igualar en el where
      $postId = $input['ids'];
      $fields = getParams($input);
      echo $fields;
      $sql = "
      UPDATE tabla
      SET $fields
      WHERE ids=$postId
      con estos cambios funciono....

  • @DesarrolladorHansLuyo
    @DesarrolladorHansLuyo 3 роки тому

    Hola tengo una duda cual es la diferencia en servicio web Json y RestFul, porque en tu video vi el código fuente y me di cuenta que tu servicio web es Json.

    • @CodigoNaranja
      @CodigoNaranja  3 роки тому

      Hola, los servicios web tradicional se basan en xml esto hace que usen mas espacio y sean mas complicados. Los servicios restful usan json. Cuando escuches rest, restful, servicio web json, son lo mismo. Cuando escuches servicio web usualmente se refieren a un servicio que usa xml y un wsdl. Aqui hay un articulo en donde esta todo bien explicado. codigonaranja.com/restful-web-service
      Gracias por comentar

  • @gilleroharoberhurtadocarlo5108
    @gilleroharoberhurtadocarlo5108 5 років тому

    no me lista nada, tengo una tabla con mas de 1000 filas, pero no lo lista

  • @gonzalocuadrado21
    @gonzalocuadrado21 5 років тому +2

    Buenas, muchas gracias por el tutorial, lo tengo funcionando.
    Sin embargo tengo un problema, en mi tabla de la base de datos tengo algunas campos de tipo text y medium text, cuando el contenido de estos campos supera unos 10/15 caracteres todo deja de funcionar. Al hacer un GET se recibe la respuesta correcta (200) pero deja de mandar el contenido de la tabla en JSON, no se recibe nada.

  • @percibalvasquez
    @percibalvasquez 4 роки тому

    disculpa podrias subirlo de nuevo si no fuera inconveniente

  • @danielhanshuamancabrera2419
    @danielhanshuamancabrera2419 4 роки тому

    me sale este error cuando lo ejecuto usando postman ?
    Parse error: syntax error, unexpected '[' in C:\inetpub\wwwroot
    est\src\config.php on line 5

    • @danielhanshuamancabrera2419
      @danielhanshuamancabrera2419 4 роки тому

      lo he revisado y creo que es por los corchetes? que hago

    • @CodigoNaranja
      @CodigoNaranja  4 роки тому

      Hola, que version de PHP estas usando? esa sintaxis es valida a partir de PHP 5.4

  • @lizandroq
    @lizandroq 4 роки тому

    Excelente video. Pero no se puede descargar codigo

  • @williamsernestodamazogarci20
    @williamsernestodamazogarci20 2 роки тому

    Hola! implemente tu codigo y funciona siempre y cuando instale postman en la PC, cuando lo ejecuto en el navegador me tira el siguiente error: "Cloud Agent Error: Can not send requests to reserved address. Make sure address is publicly accessible or select a different agent" ¿sabe como lo puedo solucionar? me interesa que mi api rest este en servidor local y sea llamado desde otro dispositivo de la misma red LAN solo que este sea un app web

    • @CodigoNaranja
      @CodigoNaranja  2 роки тому

      Hola, es por que si tu servicio o api esta local solo puede ser usado en tu computadora, para que sea accesible desde cualquier parte debe estar publicado en un servidor con una ip publica

  • @Blue04516
    @Blue04516 4 роки тому

    Está super bien, solo que me manda HTML en vez de Json :(

  • @agustinarenas1558
    @agustinarenas1558 4 роки тому +1

    HOLA AMIGO MUY BUEN VIDEO TENGO UN PROBLEMA CON EL PUT PONGO LO SIGUIENTE
    localhost/rest/post.php?id=3
    localhost/rest/post.php?id={3}
    VOY AL BODY EN FORMDATA Ó EN RAW
    "title": "xxx"
    NO ME ACTUALIZA EL REGISTRO ME PODRAS APOYAR
    POR FAVOR --> SOLO DALE UN 1

  • @albertobermejo8527
    @albertobermejo8527 4 роки тому

    Hola muchas gracias porel tutorial, muy sencillo y bien explicado. Pero tengo un problema con el metodo POST me devuelve este error en los logs:
    thrown in /home/rtfgd/public_html/api/post.php on line 44
    [26-Jul-2020 22:44:03 Europe/Madrid] PHP Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound in /home/rtfgd/public_html/api/post.php:44
    Esto es lo que tengo en post

    • @CodigoNaranja
      @CodigoNaranja  4 роки тому +1

      Hola, revise tu código y el problema está en el SQL del método post, tú tienes
      $sql = "INSERT INTO restaurants
      (memberid, nombre, latitud, longitud, Direccion, cpostal, ciudad)
      VALUES
      ($memberid, $nombre, $latitud, $longitud, $Direccion, $cpostal, $ciudad)";
      Pero estás usando variables que no existen, trata de ponerlas como :memberid en lugar $memberid (: en lugar de $), también debes de validar que en el arreglo $_POST vienen todas esas variables. Eso no lo hice en el ejemplo por que trato de mantener todo sencillo, si pongo cada validación, el código sería más difícil de leer.
      Si tienes dudas sobre como manejar bases de datos con PDO en PHP, aquí tengo un tutorial en mi blog que te puede ayudar
      www.codigonaranja.com/2018/acceso-bases-datos-usando-pdo-php

    • @albertobermejo8527
      @albertobermejo8527 4 роки тому

      @@CodigoNaranja Buenas, muchas gracias, si tienes razón lo hice con los 2 puntos y fue cuando me dio ese error. Después probe con los $ y tampoco funcionaba, pero el error es con los : , no entiendo muy bien a que te refieres con que vengan esas variables en $_POST, debo incluirlas en algun lugar más de donde las he incluido?
      muchas gracias de nuevo!

    • @salonet97
      @salonet97 3 роки тому

      Pudiste resolverlo? me sale lo mismo.

  • @josue_ayala27
    @josue_ayala27 4 роки тому

  • @beticohernandez9536
    @beticohernandez9536 3 роки тому

    Hola,
    esa API como se le hace para un carrito de compras con sesiones?