1. Go to this page and download the library: Download dev-toolbelt/jsend-payload library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
dev-toolbelt / jsend-payload example snippets
use DevToolbelt\JsendPayload\AnswerTrait;
use Psr\Http\Message\ResponseInterface;
class UserController
{
use AnswerTrait;
public function show(string $id): ResponseInterface
{
$user = $this->userRepository->find($id);
if (!$user) {
return $this->answerRecordNotFound();
}
return $this->answerSuccess($user);
}
}
// Returns: {"status": "success", "data": {"id": 1, "name": "John"}}
return $this->answerSuccess(['id' => 1, 'name' => 'John']);
// With custom HTTP status code
use DevToolbelt\Enums\Http\HttpStatusCode;
return $this->answerSuccess($createdUser, HttpStatusCode::CREATED);
use DevToolbelt\JsendPayload\AnswerTrait;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
class CreateUserAction
{
use AnswerTrait;
public function __invoke(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface
{
$data = $request->getParsedBody();
if (empty($data)) {
return $this->answerEmptyPayload();
}
if (empty($data['email'])) {
return $this->answerRequired('email');
}
$user = $this->userService->create($data);
return $this->answerSuccess($user, HttpStatusCode::CREATED);
}
}
namespace App\Http\Controllers;
use DevToolbelt\JsendPayload\AnswerTrait;
use Illuminate\Http\Request;
use Psr\Http\Message\ResponseInterface;
class UserController extends Controller
{
use AnswerTrait;
public function store(Request $request): ResponseInterface
{
$validated = $request->validate([
'name' => '
namespace App\Handler;
use DevToolbelt\JsendPayload\AnswerTrait;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
class UserHandler implements RequestHandlerInterface
{
use AnswerTrait;
public function handle(ServerRequestInterface $request): ResponseInterface
{
$id = $request->getAttribute('id');
$user = $this->repository->find($id);
if (!$user) {
return $this->answerRecordNotFound();
}
return $this->answerSuccess($user->toArray());
}
}
namespace App\Controller;
use DevToolbelt\JsendPayload\AnswerTrait;
use DevToolbelt\Enums\Http\HttpStatusCode;
use Psr\Http\Message\ResponseInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
class UserController extends AbstractController
{
use AnswerTrait;
#[Route('/api/users/{id}', name: 'api_user_show', methods: ['GET'])]
public function show(string $id, UserRepository $repository): ResponseInterface
{
$user = $repository->find($id);
if (!$user) {
return $this->answerRecordNotFound();
}
return $this->answerSuccess([
'id' => $user->getId(),
'name' => $user->getName(),
'email' => $user->getEmail(),
]);
}
#[Route('/api/users', name: 'api_user_create', methods: ['POST'])]
public function create(Request $request, UserRepository $repository): ResponseInterface
{
$data = json_decode($request->getContent(), true);
if (empty($data)) {
return $this->answerEmptyPayload();
}
if (empty($data['email'])) {
return $this->answerRequired('email');
}
$user = $repository->create($data);
return $this->answerSuccess($user, HttpStatusCode::CREATED);
}
}
namespace app\controllers;
use DevToolbelt\JsendPayload\AnswerTrait;
use DevToolbelt\Enums\Http\HttpStatusCode;
use Psr\Http\Message\ResponseInterface;
use yii\web\Controller;
class UserController extends Controller
{
use AnswerTrait;
public function actionView(string $id): ResponseInterface
{
$user = User::findOne($id);
if (!$user) {
return $this->answerRecordNotFound();
}
return $this->answerSuccess($user->toArray());
}
public function actionCreate(): ResponseInterface
{
$data = \Yii::$app->request->getBodyParams();
if (empty($data)) {
return $this->answerEmptyPayload();
}
$user = new User();
$user->load($data, '');
if (!$user->validate()) {
return $this->answerFail(
array_map(fn($field, $errors) => [
'field' => $field,
'error' => 'validation',
'message' => implode(', ', $errors),
], array_keys($user->errors), $user->errors)
);
}
$user->save();
return $this->answerSuccess($user->toArray(), HttpStatusCode::CREATED);
}
}
declare(strict_types=1);
namespace App\Controller\Api;
use App\Controller\AppController;
use DevToolbelt\JsendPayload\AnswerTrait;
use DevToolbelt\Enums\Http\HttpStatusCode;
use Psr\Http\Message\ResponseInterface;
class UsersController extends AppController
{
use AnswerTrait;
public function view(string $id): ResponseInterface
{
$user = $this->Users->find()
->where(['id' => $id])
->first();
if (!$user) {
return $this->answerRecordNotFound();
}
return $this->answerSuccess($user->toArray());
}
public function add(): ResponseInterface
{
$data = $this->request->getData();
if (empty($data)) {
return $this->answerEmptyPayload();
}
$user = $this->Users->newEntity($data);
if ($user->hasErrors()) {
$errors = [];
foreach ($user->getErrors() as $field => $fieldErrors) {
foreach ($fieldErrors as $error => $message) {
$errors[] = [
'field' => $field,
'error' => $error,
'message' => $message,
];
}
}
return $this->answerFail($errors);
}
$this->Users->save($user);
return $this->answerSuccess($user->toArray(), HttpStatusCode::CREATED);
}
}
namespace App\Controllers\Api;
use CodeIgniter\RESTful\ResourceController;
use DevToolbelt\JsendPayload\AnswerTrait;
use DevToolbelt\Enums\Http\HttpStatusCode;
use Psr\Http\Message\ResponseInterface;
class UserController extends ResourceController
{
use AnswerTrait;
protected $modelName = 'App\Models\UserModel';
public function show($id = null): ResponseInterface
{
$user = $this->model->find($id);
if (!$user) {
return $this->answerRecordNotFound();
}
return $this->answerSuccess($user);
}
public function create(): ResponseInterface
{
$data = $this->request->getJSON(true);
if (empty($data)) {
return $this->answerEmptyPayload();
}
$validation = \Config\Services::validation();
if (!$validation->run($data, 'userRules')) {
$errors = [];
foreach ($validation->getErrors() as $field => $message) {
$errors[] = [
'field' => $field,
'error' => 'validation',
'message' => $message,
];
}
return $this->answerFail($errors);
}
$userId = $this->model->insert($data);
$user = $this->model->find($userId);
return $this->answerSuccess($user, HttpStatusCode::CREATED);
}
public function update($id = null): ResponseInterface
{
$user = $this->model->find($id);
if (!$user) {
return $this->answerRecordNotFound();
}
$data = $this->request->getJSON(true);
if (empty($data)) {
return $this->answerEmptyPayload();
}
$this->model->update($id, $data);
return $this->answerSuccess($this->model->find($id));
}
public function delete($id = null): ResponseInterface
{
$user = $this->model->find($id);
if (!$user) {
return $this->answerRecordNotFound();
}
$this->model->delete($id);
return $this->answerNoContent();
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.