I want to update one of the resources I defined (user) to update his current status (online/offline) and/or location. Therefore I would use a PUT request like this:
PUT http://server/v1/users/12345
Payload
{
"status": 0
}
to set the status offline for example.
Or it could be:
Payload
{
"latitude": 100,
"longitude": 100
}
The backend is based on Laravel/PHP and I respond to this request in my controller:
public function update(Request $request, $userReference) {
// Get payload from request
$bodyContent = json_decode($request->getContent(), true);
$userReference = $userReference;
// Update the user location
$updateResponderLocationCommand = new UpdateResponderLocationCommand($bodyContent);
$this->commandBus->execute($updateResponderLocationCommand);
$response = [
'userReference' => $userReference
];
return $this->setStatusCode(201)->respond($response);
}
This controller uses a command system I integrated that will trigger the task of doing the update.
My questions are, where I struggle:
- How do I do differentiate between the commands that should be executed. Right now, only the LocationUpdate is in this method. But I don't want to write a new update message just for the status update.
- So how does a request need to work properly? Can I still use the approach with
PUT http://server/v1/user/100
and by having keywords in the payload and a select switch - approach within the controller a differentiation between tasks to be executed upon? - Am I suppsoed to use PUT at all, when I only update a single component? I read that I should use POST instead?