I'm currently working on a Social Application.
I would like to have a versioning system on my PHP backend, but I don't know where to start: I have looked up bunch of articles online, but I couldn't really understand what I've found.
Let's say my application is v1.0. Then I create a new version v2.0 and of course I update the PHP files too. After this, if someone hasn't updated their app from v1.0, I would like them to reach myapp.com/v1.0/
, so that the app doesn't crash.
What would you recommend?
A typical PHP file of mine looks like this, for example:
<?php
// Include files
include_once ('../../config.php');
include_once (ROOT_DIR . '/config/includes.php');
$_USERDATA = Validator::validateUser($_POST["userId"], $_POST["session"]);
// Valid session
$qry = $db->prepare('SELECT n.id, n.type, n.time, n.isRead, n.postId, n.commentId, n.text, n.inReplyToCommentId, u.id as byUserId,
( SELECT COUNT(nu.id)
FROM notificationUsers AS nu
WHERE nu.notificationId = n.id ) as detail1,
( SELECT nu2.userId
FROM notificationUsers AS nu2
WHERE nu2.notificationId = n.id ORDER BY nu2.id DESC LIMIT 1 ) as latestUserId FROM notifications AS n LEFT JOIN userData AS u ON n.byUserId = u.id
WHERE n.userId = :userId ORDER BY n.time DESC');
$qry->bindParam(':userId', $_USERDATA["userId"], PDO::PARAM_INT);
$qry->execute();
$notificationsArray = $qry->fetchAll(PDO::FETCH_ASSOC);
$returnValue = array();
$returnValue["status"] = "1";
$returnValue["title"] = "Success";
$returnValue["message"] = "Downloaded notifications";
$returnValue["data_notifications"] = $notificationsArray;
exit(json_encode($returnValue));
?>
...
UPDATE 1
So I decided to do the following:
Placing every not shared file inside a folder like so:
/api/v1.0/file.php
But every resource for example (images) is outside the api
/resources/images/profilepictures/image.jpg
If I make a minor change, I just update the files within the api/v1.0/
folder.
Then, all the users that are using the Application v1.1
, they are requesting myapp.com/api/v1.1/
, but I redirect them to api/v1.0/ where I can present the users the right data (depending if the request was from v1.0 or v1.1)
If the versions add up and I release a bigger update, I'll create a new folder with the name v2.0
, and so it goes...
Or what do you think. How should I do it?
from Creating API versioning for my php application (Social App)
No comments:
Post a Comment