Skip to content

This PHP script allow you to create a simple and universal REST API with MySQL.

Notifications You must be signed in to change notification settings

darioTecchia/uni-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0f9717a · Dec 5, 2017

History

13 Commits
Sep 4, 2017
Dec 5, 2017
Aug 30, 2017
Dec 5, 2017
Aug 30, 2017
Aug 2, 2017
Aug 2, 2017
Aug 2, 2017

Repository files navigation

uni-api

This PHP script allow you to create a simple and universal REST API. Based on the original idea of Maurits van der Schee, Creating a simple REST API in PHP.

It use a MySQL Database.

uni-api support HTTP verbs GET, POST, PATCH, PUT and DELETE.

It have an authentication module.

Table Of Contents

Install

  • Save the file api.php and /core folder in your server document root

  • configure the config.php file with the requested parameters

  • Configure the database's models in models.json

    • the main use it will be automatically created with admin as username and password
  • launch install.php from the browser

  • Check if there is any errors while the installation

Configure the models

There is a models already written by me in the project folder.

Usage & API

The usage is realy simple:

user

Basic API

POST api.php/user
Logs user into the system

request:

{ 
    "username": "foo",
    "password": "foopass"
}

response:

{ 
    "username": "foo",
    "id": "foo_id",
    "token": "access_token"
}

PATCH api.php/user/:id
Update user

request: (you can send just username, password or both)

{ 
    "username": "new_foo_username",
    "password": "new_foo_pass"
}

response:

{ 
    "count": "# of the rows affected"
}

other tables

no relations

GET api.php/table
Get all the rows

response:

[
  { 
    //row_one
  },
  { 
    //row_two
  }
]

GET api.php/table/:id
Find row by ID

response:

{
    //all table's fields
}

PUT api.php/table/:id
Update a row in the database
Need to send the access_token in the Authorization header

request:

{ 
    //row's fields i want to update
}

response:

{ 
    "count": "# of the rows affected"
}

POST api.php/table
Create a new row
Need to send the access_token in the Authorization header

request:

{ 
    //table's field without id and update_date
}

response:

{ 
    "count": "# of the rows affected"
}

DELETE api.php/table/:id
Create a new row
Need to send the access_token in the Authorization header

response:

{ 
    "count": "# of the rows affected"
}

relations

hasOne

GET api.php/table/:id/relatedTable
Delete

  • Make a GET request to the table;
  • Get the relatedTable_id from the body;
  • Make a GET request to the relatedTeble with the obtained id.

PUT api.php/table/:id/relatedTable
Create a new relation
Need to send the access_token in the Authorization header

  • Just update the relatedTable_id field with the related element's id.

DELETE api.php/table/:id/relatedTable
Create a new row
Need to send the access_token in the Authorization header

  • Just set to NULL the relatedTable_id field

hasMany

GET api.php/table/:id/relatedTable
Get the realted elements of a determinate table
Need to send the access_token in the Authorization header

response:

{ 
    [
      { 
        //row_one
      },
      { 
        //row_two
      }
    ]
}

POST api.php/table/:id/relatedTable
Relate an existent element to the table
Need to send the access_token in the Authorization header

request:

{ 
    // an existent element to relate
}

response:

{ 
    "count": "# of the rows affected"
}

DELETE api.php/table/:id/relatedTable/:relatedId
Delete a relation between two elements
Need to send the access_token in the Authorization header

response:

{ 
    "count": "# of the rows affected"
}

WIP

  • User
    • User permission
    • Custom user
    • Better Multi User support
  • Files
    • Files support
  • Models
    • At State of Art you can't delete models or update it after. I want to make that possible.
    • Better configuration of the models. (I.E.: Required/Not Required fields)
  • Example
    • Write a complete example.

About

This PHP script allow you to create a simple and universal REST API with MySQL.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages