Better API response when request body is not valid JSON (references #126)

This commit is contained in:
Bernd Bestel 2019-01-05 20:39:22 +01:00
parent c042657dd8
commit f6cf26009d
No known key found for this signature in database
GPG Key ID: 71BD34C0D4891300
2 changed files with 41 additions and 8 deletions

View File

@ -32,11 +32,25 @@ class GenericEntityApiController extends BaseApiController
{ {
if ($this->IsValidEntity($args['entity'])) if ($this->IsValidEntity($args['entity']))
{ {
$newRow = $this->Database->{$args['entity']}()->createRow($request->getParsedBody()); $requestBody = $request->getParsedBody();
try
{
if ($requestBody === null)
{
throw new \Exception('Request body could not be parsed (probably invalid JSON format or missing/wrong Content-Type header)');
}
$newRow = $this->Database->{$args['entity']}()->createRow($requestBody);
$newRow->save(); $newRow->save();
$success = $newRow->isClean(); $success = $newRow->isClean();
return $this->ApiResponse(array('success' => $success)); return $this->ApiResponse(array('success' => $success));
} }
catch (\Exception $ex)
{
return $this->VoidApiActionResponse($response, false, 400, $ex->getMessage());
}
}
else else
{ {
return $this->VoidApiActionResponse($response, false, 400, 'Entity does not exist or is not exposed'); return $this->VoidApiActionResponse($response, false, 400, 'Entity does not exist or is not exposed');
@ -47,11 +61,25 @@ class GenericEntityApiController extends BaseApiController
{ {
if ($this->IsValidEntity($args['entity'])) if ($this->IsValidEntity($args['entity']))
{ {
$requestBody = $request->getParsedBody();
try
{
if ($requestBody === null)
{
throw new \Exception('Request body could not be parsed (probably invalid JSON format or missing/wrong Content-Type header)');
}
$row = $this->Database->{$args['entity']}($args['objectId']); $row = $this->Database->{$args['entity']}($args['objectId']);
$row->update($request->getParsedBody()); $row->update($requestBody);
$success = $row->isClean(); $success = $row->isClean();
return $this->ApiResponse(array('success' => $success)); return $this->ApiResponse(array('success' => $success));
} }
catch (\Exception $ex)
{
return $this->VoidApiActionResponse($response, false, 400, $ex->getMessage());
}
}
else else
{ {
return $this->VoidApiActionResponse($response, false, 400, 'Entity does not exist or is not exposed'); return $this->VoidApiActionResponse($response, false, 400, 'Entity does not exist or is not exposed');

View File

@ -32,6 +32,11 @@ class UsersApiController extends BaseApiController
try try
{ {
if ($requestBody === null)
{
throw new \Exception('Request body could not be parsed (probably invalid JSON format or missing/wrong Content-Type header)');
}
$this->UsersService->CreateUser($requestBody['username'], $requestBody['first_name'], $requestBody['last_name'], $requestBody['password']); $this->UsersService->CreateUser($requestBody['username'], $requestBody['first_name'], $requestBody['last_name'], $requestBody['password']);
return $this->ApiResponse(array('success' => true)); return $this->ApiResponse(array('success' => true));
} }