- How To Setup Simple REST API Using PHP How To Setup Simple REST API Using PHP
X
Hold On! Don’t Miss Out on What’s Waiting for You!
  • Clear Project Estimates

    Get a simple and accurate idea of how much time and money your project will need—no hidden surprises!

  • Boost Your Revenue with AI

    Learn how using AI can help your business grow faster and make more money.

  • Avoid Common Mistakes

    Find out why many businesses fail after launching and how you can be one of the successful ones.

    Get a Quote

    X

    Get a Free Consultation today!

    With our expertise and experience, we can help your brand be the next success story.

      Get a Quote

      How To Setup Simple REST API Using PHP?

      7,877 views
      Amit Shukla

      If you are looking to set up Rest Api Using Php here are steps to follow for How To Setup Simple REST API Using PHP?

      Overview:

      1. What is REST API?
      2. How To INSERT Data Using REST API?
      3. How To READ Data Using REST API?
      4. How To UPDATE Data Using REST API?
      5. How To DELETE Data Using REST API?

      1. What is REST API using PHP?

      GUYS, we are learning REST API, To define “REST API”, We Have To Know What is “REST” and What is “API” First.
      let’s Get Started:)
      Guys, “API” What is API?

      API stands for “Application Programming Interface”.
      API is just a piece of program or a set of rules that provides a way of communication from one software application to another software application.
      for example: when we use some app or website to book our tickets. we take the example of PAYTM.when to explore Paytm to book our tickets, we see ‘how many tickets are left?
      and also ‘what seat is booked’? or ‘what seat is still blank’?
      in the background Paytm fetch data through API and displays it in our app.

      Then REST Stands for “REPRESENTATIONAL STATE TRANSFER”. REST API Using PHP is a concept of managing or transferring Information and Data over the internet. REST is Referred to as Resource. REST is usually represented by JSON. REST has a lot of concepts inside of it. I explain some basic operations(INSERT, READ, UPDATE & DELETE) that are performed by REST API. if you want to learn more, you can check the Documentation: https://developer.wordpress.com/docs/api/

      OPERATIONS:
      Before start performing the operations, we need to set up a database. so get ready to set up a database.

      SETUP THE DATABASE:
      Using PhpMyAdmin, create a new “restapi_db” database. Yes, “restapi_db” is the database name. After that, run the following SQL queries to create new tables with sample data.

      Create Products Table:

      [php]
      CREATE TABLE IF NOT EXISTS `products` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(32) NOT NULL,
      `description` text NOT NULL,
      `price` decimal(10,0) NOT NULL,
      `category_id` int(11) NOT NULL,
      `created` datetime NOT NULL,
      `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=65 ;
      [/php]
      Insert Data For Products Table:

      [php]
      INSERT INTO `products` (`id`, `name`, `description`, `price`, `category_id`, `created`, `modified`) VALUES
      (1, ‘LG P880 4X HD’, ‘My first awesome phone!’, ‘336’, 3, ‘2014-06-01 01:12:26’, ‘2014-05-31 17:12:26’),
      (2, ‘Google Nexus 4’, ‘The most awesome phone of 2013!’, ‘299’, 2, ‘2014-06-01 01:12:26’, ‘2014-05-31 17:12:26’),
      (3, ‘Samsung Galaxy S4’, ‘How about no?’, ‘600’, 3, ‘2014-06-01 01:12:26’, ‘2014-05-31 17:12:26’),
      (4, ‘Bench Shirt’, ‘The best shirt!’, ’29’, 1, ‘2014-06-01 01:12:26’, ‘2014-05-31 02:12:21’),
      (5, ‘Lenovo Laptop’, ‘My business partner.’, ‘399’, 2, ‘2014-06-01 01:13:45’, ‘2014-05-31 02:13:39’),
      (6, ‘Samsung Galaxy Tab 10.1’, ‘Good tablet.’, ‘259’, 2, ‘2014-06-01 01:14:13’, ‘2014-05-31 02:14:08’),
      (7, ‘Spalding Watch’, ‘My sports watch.’, ‘199’, 1, ‘2014-06-01 01:18:36’, ‘2014-05-31 02:18:31’),
      (8, ‘Sony Smart Watch’, ‘The coolest smart watch!’, ‘300’, 2, ‘2014-06-06 17:10:01’, ‘2014-06-05 18:09:51’),
      (9, ‘Huawei Y300’, ‘For testing purposes.’, ‘100’, 2, ‘2014-06-06 17:11:04’, ‘2014-06-05 18:10:54’),
      (10, ‘Rolex Watch’, ‘Luxury watch.’, ‘25000’, 1, ‘2016-01-11 15:46:02’, ‘2016-01-11 14:46:02’);
      [/php]
      Connect to database:
      Create “config” folder. Open that folder and create “database.php” file. Put the following code inside it.

      [php]
      <?php class Database{ // specify your own database credentials private $host = “localhost”; private $db_name = “api_db”; private $username = “root”; private $password = “”; public $conn; // get the database connection public function getConnection(){ $this->conn = null; try{ $this->conn = new PDO(“mysql:host=” . $this->host . “;dbname=” . $this->db_name, $this->username, $this->password); $this->conn->exec(“set names utf8”); }catch(PDOException $exception){ echo “Connection error: ” . $exception->getMessage(); } return $this->conn; } } ?>
      [/php]

      2. How To INSERT Data Using REST API?

      Create insert.php file:
      Open “product” folder. Create a new “insert.php” file. Open that file and put the following code inside it.

      [php]
      <?php
      // required headers
      header(“Access-Control-Allow-Origin: *”);
      header(“Content-Type: application/json; charset=UTF-8”);
      header(“Access-Control-Allow-Methods: POST”);
      header(“Access-Control-Max-Age: 3600”);
      header(“Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With”);

      // get database connection
      include_once ‘../config/database.php’;

      // instantiate product object
      include_once ‘../objects/product.php’;

      $database = new Database();
      $db = $database->getConnection();

      $product = new Product($db);

      // get posted data
      $data = json_decode(file_get_contents(“php://input”));

      // set product property values
      $product->name = $data->name;
      $product->price = $data->price;
      $product->description = $data->description;
      $product->category_id = $data->category_id;
      $product->created = date(‘Y-m-d H:i:s’);

      // insert the product
      if($product->insert()){
      echo ‘{‘;
      echo ‘”message”: “Product was insrted.”‘;
      echo ‘}’;
      }

      // if unable to insert the product, tell the user
      else{
      echo ‘{‘;
      echo ‘”message”: “Unable to insert product.”‘;
      echo ‘}’;
      }
      ?>
      [/php]
      Product insert() method:
      Open the “objects” folder. Open the “product.php” file. The previous section will not work without the following code inside the Product (objects/product.php) class.
      Add the following method inside the “Product” class. To make sure you added it correctly, but the code before the last closing curly brace.

      [php]
      // insert product
      function insert(){

      // query to insert record
      $query = “INSERT INTO
      ” . $this->table_name . ”
      SET
      name=:name, price=:price, description=:description, category_id=:category_id, created=:created”;

      // prepare query
      $stmt = $this->conn->prepare($query);

      // sanitize
      $this->name=htmlspecialchars(strip_tags($this->name));
      $this->price=htmlspecialchars(strip_tags($this->price));
      $this->description=htmlspecialchars(strip_tags($this->description));
      $this->category_id=htmlspecialchars(strip_tags($this->category_id));
      $this->created=htmlspecialchars(strip_tags($this->created));

      // bind values
      $stmt->bindParam(“:name”, $this->name);
      $stmt->bindParam(“:price”, $this->price);
      $stmt->bindParam(“:description”, $this->description);
      $stmt->bindParam(“:category_id”, $this->category_id);
      $stmt->bindParam(“:created”, $this->created);

      // execute query
      if($stmt->execute()){
      return true;
      }

      return false;

      }
      [/php]

      3. How To READ Data Using REST API?

      One more step which make process easy for How To Setup Simple REST API Using PHP..
      Create “objects” folder. Open that folder and create “product.php” file. Put the following code inside it.

      [php]
      <?php
      class Product{

      // database connection and table name
      private $conn;
      private $table_name = “products”;

      // object properties
      public $id;
      public $name;
      public $description;
      public $price;
      public $category_id;
      public $category_name;
      public $created;

      // constructor with $db as database connection
      public function __construct($db){
      $this->conn = $db;
      }
      }
      [/php]
      Create “read.php” file:
      Create “product” folder. Open that folder and create “read.php” file. Put the following code inside it.

      [php]
      <?php
      // required headers
      header(“Access-Control-Allow-Origin: *”);
      header(“Content-Type: application/json; charset=UTF-8”);

      // include database and object files
      include_once ‘../config/database.php’;
      include_once ‘../objects/product.php’;

      // instantiate database and product object
      $database = new Database();
      $db = $database->getConnection();

      // initialize object
      $product = new Product($db);

      // query products
      $stmt = $product->read();
      $num = $stmt->rowCount();

      // check if more than 0 record found
      if($num>0){

      // products array
      $products_arr=array();
      $products_arr[“records”]=array();

      // retrieve our table contents
      // fetch() is faster than fetchAll()
      // http://stackoverflow.com/questions/2770630/pdofetchall-vs-pdofetch-in-a-loop
      while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
      // extract row
      // this will make $row[‘name’] to
      // just $name only
      extract($row);

      $product_item=array(
      “id” => $id,
      “name” => $name,
      “description” => html_entity_decode($description),
      “price” => $price,
      “category_id” => $category_id,
      “category_name” => $category_name
      );

      array_push($products_arr[“records”], $product_item);
      }

      echo json_encode($products_arr);
      }

      else{
      echo json_encode(
      array(“message” => “No products found.”)
      );
      }
      ?>
      [/php]
      Add Product “read()” method:
      Open the “objects” folder. Open the “product.php” file. The code in the previous section will not work without the following code in the “product.php” file.
      Add the following method inside the “Product” class. To make sure you added it correctly, but the code before the last closing curly brace.

      [php]
      // read products
      function read(){

      // select all query
      $query = “SELECT
      c.name as category_name, p.id, p.name, p.description, p.price, p.category_id, p.created
      FROM
      ” . $this->table_name . ” p
      LEFT JOIN
      categories c
      ON p.category_id = c.id
      ORDER BY
      p.created DESC”;

      // prepare query statement
      $stmt = $this->conn->prepare($query);

      // execute query
      $stmt->execute();

      return $stmt;
      }
      [/php]
      Output:

      [sourcecode language=”plain”]
      If you develop on localhost and will run the read.php file using this URL: http://localhost/api/product/read.php
      you can test API by a “POSTMAN” tool, yes “POSTMAN” is the name of the tool you can launch this tool in as a google chrome extension by this link: https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=en
      [/sourcecode]
      Notice: Extension works only in chrome browser.

      READ ONE PRODUCT:
      Create read_one.php file
      Open “product” folder. Create new “read_one.php” file. Open that file and put the following code.

      [php]
      <?php
      header(“Access-Control-Allow-Origin: *”);
      header(“Access-Control-Allow-Headers: access”);
      header(“Access-Control-Allow-Methods: GET”);
      header(“Access-Control-Allow-Credentials: true”);
      header(‘Content-Type: application/json’);

      // include database and object files
      include_once ‘../config/database.php’;
      include_once ‘../objects/product.php’;

      // get database connection
      $database = new Database();
      $db = $database->getConnection();

      // prepare product object
      $product = new Product($db);

      // set ID property of product to be edited
      $product->id = isset($_GET[‘id’]) ? $_GET[‘id’] : die();

      // read the details of product to be edited
      $product->readOne();

      // create array
      $product_arr = array(
      “id” => $product->id,
      “name” => $product->name,
      “description” => $product->description,
      “price” => $product->price,
      “category_id” => $product->category_id,
      “category_name” => $product->category_name

      );

      // make it json format
      print_r(json_encode($product_arr));
      ?>
      [/php]
      Product readOne() method:
      Open the “objects” folder. Open the “product.php” file. The previous section will not work without the following code inside the Product class.
      Add the following method inside the “Product” class. To make sure you added it correctly, but the code before the last closing curly brace.

      [php]
      // used when filling up the update product form
      function readOne(){

      // query to read single record
      $query = “SELECT
      c.name as category_name, p.id, p.name, p.description, p.price, p.category_id, p.created
      FROM
      ” . $this->table_name . ” p
      LEFT JOIN
      categories c
      ON p.category_id = c.id
      WHERE
      p.id = ?
      LIMIT
      0,1″;

      // prepare query statement
      $stmt = $this->conn->prepare( $query );

      // bind id of product to be updated
      $stmt->bindParam(1, $this->id);

      // execute query
      $stmt->execute();

      // get retrieved row
      $row = $stmt->fetch(PDO::FETCH_ASSOC);

      // set values to object properties
      $this->name = $row[‘name’];
      $this->price = $row[‘price’];
      $this->description = $row[‘description’];
      $this->category_id = $row[‘category_id’];
      $this->category_name = $row[‘category_name’];
      }
      [/php]
      Output:

      [sourcecode language=”plain”]
      If you develop on localhost and will run the read_one.php file using this URL: http://localhost/api/product/read_one.php?id=1
      As you can see in the URL above, an ID parameter value (id=1) has to be passed.
      you can test API by a “POSTMAN” tool, yes “POSTMAN” is the name of the tool you can launch this tool in as a google chrome extension by this link: https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=en
      [/sourcecode]
      Notice: Extension works only in chrome browser.

      4. How To UPDATE Data Using REST API?

      Create “update.php” file:
      Open “product” folder. Create new “update.php” file. Open that file and put the following code inside it.

      [php]
      <?php
      // required headers
      header(“Access-Control-Allow-Origin: *”);
      header(“Content-Type: application/json; charset=UTF-8”);
      header(“Access-Control-Allow-Methods: POST”);
      header(“Access-Control-Max-Age: 3600”);
      header(“Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With”);

      // include database and object files
      include_once ‘../config/database.php’;
      include_once ‘../objects/product.php’;

      // get database connection
      $database = new Database();
      $db = $database->getConnection();

      // prepare product object
      $product = new Product($db);

      // get id of product to be edited
      $data = json_decode(file_get_contents(“php://input”));

      // set ID property of product to be edited
      $product->id = $data->id;

      // set product property values
      $product->name = $data->name;
      $product->price = $data->price;
      $product->description = $data->description;
      $product->category_id = $data->category_id;

      // update the product
      if($product->update()){
      echo ‘{‘;
      echo ‘”message”: “Product was updated.”‘;
      echo ‘}’;
      }

      // if unable to update the product, tell the user
      else{
      echo ‘{‘;
      echo ‘”message”: “Unable to update product.”‘;
      echo ‘}’;
      }
      ?>
      [/php]
      Product update() method
      Open the “objects” folder. Open the “product.php” file. The previous section will not work without the following code inside the Product class.

      Add the following method inside the “Product” class. To make sure you added it correctly, but the code before the last closing curly brace.

      [php]
      // update the product
      function update(){

      // update query
      $query = “UPDATE
      ” . $this->table_name . ”
      SET
      name = :name,
      price = :price,
      description = :description,
      category_id = :category_id
      WHERE
      id = :id”;

      // prepare query statement
      $stmt = $this->conn->prepare($query);

      // sanitize
      $this->name=htmlspecialchars(strip_tags($this->name));
      $this->price=htmlspecialchars(strip_tags($this->price));
      $this->description=htmlspecialchars(strip_tags($this->description));
      $this->category_id=htmlspecialchars(strip_tags($this->category_id));
      $this->id=htmlspecialchars(strip_tags($this->id));

      // bind new values
      $stmt->bindParam(‘:name’, $this->name);
      $stmt->bindParam(‘:price’, $this->price);
      $stmt->bindParam(‘:description’, $this->description);
      $stmt->bindParam(‘:category_id’, $this->category_id);
      $stmt->bindParam(‘:id’, $this->id);

      // execute the query
      if($stmt->execute()){
      return true;
      }

      return false;
      }
      [/php]

      5. How To DELETE Data Using REST API Using PHP?

      Create “delete.php” file:
      Open “product” folder. Create new “delete.php” file. Open that file and put the following code inside it.

      [php]
      <?php
      // required headers
      header(“Access-Control-Allow-Origin: *”);
      header(“Content-Type: application/json; charset=UTF-8”);
      header(“Access-Control-Allow-Methods: POST”);
      header(“Access-Control-Max-Age: 3600”);
      header(“Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With”);

      // include database and object file
      include_once ‘../config/database.php’;
      include_once ‘../objects/product.php’;

      // get database connection
      $database = new Database();
      $db = $database->getConnection();

      // prepare product object
      $product = new Product($db);

      // get product id
      $data = json_decode(file_get_contents(“php://input”));

      // set product id to be deleted
      $product->id = $data->id;

      // delete the product
      if($product->delete()){
      echo ‘{‘;
      echo ‘”message”: “Product was deleted.”‘;
      echo ‘}’;
      }

      // if unable to delete the product
      else{
      echo ‘{‘;
      echo ‘”message”: “Unable to delete object.”‘;
      echo ‘}’;
      }
      ?>
      [/php]
      Product delete() method:
      Open the “objects” folder. Open the “product.php” file. The previous section will not work without the following code inside the Product class.
      Add the following method inside the “Product” class. To make sure you added it correctly, but the code before the last closing curly brace.

      [php]
      // delete the product
      function delete(){

      // delete query
      $query = “DELETE FROM ” . $this->?table_name . ” WHERE id = ?”;

      // prepare query
      $stmt = $this->conn->prepare($query);

      // sanitize
      $this->id=htmlspecialchars(strip_tags($this->id));

      // bind id of record to delete
      $stmt->bindParam(1, $this->id);

      // execute query
      if($stmt->execute()){
      return true;
      }

      return false;

      }
      [/php]

      If you have a friend or know someone who needs this PHP REST API Tutorial, please share this page with them! I know you will help them a lot by doing it. Please follow all steps of How To Setup Simple REST API Using PHP, it will guide you to complete the process.

      Please Connect with us for any questions or any concerns related to How To Setup Simple REST API Using PHP.

      Avatar for Amit
      The Author
      Amit Shukla
      Director of NBT
      Amit Shukla is the Director of Next Big Technology, a leading IT consulting company. With a profound passion for staying updated on the latest trends and technologies across various domains, Amit is a dedicated entrepreneur in the IT sector. He takes it upon himself to enlighten his audience with the most current market trends and innovations. His commitment to keeping the industry informed is a testament to his role as a visionary leader in the world of technology.

      Talk to Consultant