1. Go to this page and download the library: Download fishyboat21/simple-api 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/ */
fishyboat21 / simple-api example snippets
ishyboat21\SimpleApi\Endpoint;
use Fishyboat21\SimpleApi\Http\Request;
use Fishyboat21\SimpleApi\Http\Response;
$api = new Endpoint();
$api->get(function (Request $request): Response {
return Response::ok(['status' => 'healthy']);
});
$api->run();
// public/api/products.php
int;
use Fishyboat21\SimpleApi\Http\Request;
use Fishyboat21\SimpleApi\Http\Response;
$api = new Endpoint();
$api->get(function (Request $request): Response {
return Response::ok([
'products' => [/* ... */],
]);
});
$api->run();
// public/api/users.php
dpoint;
use Fishyboat21\SimpleApi\Http\Request;
use Fishyboat21\SimpleApi\Http\Response;
$api = new Endpoint();
$api->get(function (Request $request): Response {
return Response::ok(['users' => [/* all users */]]);
});
$api->post(function (Request $request): Response {
$name = $request->body('name');
// ... create user ...
return Response::created(['id' => 1], 'User created');
});
$api->run();
$api->get(function (Request $request): Response {
// Query string: /api/search.php?q=hello&page=2
$query = $request->query('q'); // 'hello'
$page = $request->query('page', '1'); // '2' (with default)
$all = $request->queryParams(); // ['q' => 'hello', 'page' => '2']
// JSON body (parsed lazily on first access)
$name = $request->body('name'); // single field
$all = $request->bodyData(); // entire parsed body as array
$raw = $request->rawBody(); // raw unparsed body string
// Headers (case-insensitive)
$auth = $request->header('Authorization');
$type = $request->header('Content-Type');
// Request metadata
$method = $request->method(); // 'GET', 'POST', etc.
$uri = $request->uri(); // '/api/search.php?q=hello'
$path = $request->path(); // '/api/search.php'
return Response::ok(/* ... */);
});
// 200 OK with data
Response::ok(['user' => $user]);
// 200 OK with custom message
Response::ok(['user' => $user], 'User retrieved');
// 201 Created
Response::created(['id' => 42], 'User created');
// 204 No Content (no body)
Response::noContent();
// 404 Not Found
Response::notFound('User not found');
// Custom error status
Response::error(422, 'Validation failed');
// Custom response with headers
Response::ok(['data' => $value])
->setHeader('X-Custom', 'value')
->setHeader('Cache-Control', 'no-cache');
// public/api/health.php
fig\CorsConfig;
use Fishyboat21\SimpleApi\Endpoint;
use Fishyboat21\SimpleApi\Http\Request;
use Fishyboat21\SimpleApi\Http\Response;
$cors = new CorsConfig(
allowedOrigins: ['https://myapp.com', 'https://admin.myapp.com'],
allowedMethods: ['GET', 'POST', 'PUT', 'DELETE'],
allowedHeaders: ['Content-Type', 'Authorization'],
allowCredentials: true,
maxAge: 3600,
);
$api = new Endpoint(corsConfig: $cors);
$api->get(function (Request $request): Response {
return Response::ok(['status' => 'healthy']);
});
$api->run();
$api = new Endpoint();
$api->setLogger($myPsr3Logger); // any object with an error() method
use Fishyboat21\SimpleApi\Exception\HttpException;
use Fishyboat21\SimpleApi\Exception\NotFoundException;
$api->get(function (Request $request): Response {
$user = $this->findUser($request->query('id'));
if ($user === null) {
throw new NotFoundException('User not found');
}
return Response::ok($user);
});
class UnprocessableEntityException extends HttpException
{
public function __construct(string $message = 'Unprocessable Entity')
{
parent::__construct($message, 422);
}
public function getStatusCode(): int { return 422; }
}
Fishyboat21\SimpleApi\Endpoint;
use Fishyboat21\SimpleApi\Exception\NotFoundException;
use Fishyboat21\SimpleApi\Http\Request;
use Fishyboat21\SimpleApi\Http\Response;
$api = new Endpoint();
$api->get(function (Request $request): Response {
$taskId = (int) $request->query('id');
$task = findTask($taskId); // your data access
if ($task === null) {
throw new NotFoundException("Task {$taskId} not found");
}
return Response::ok($task);
});
$api->put(function (Request $request): Response {
$taskId = (int) $request->query('id');
$title = $request->body('title');
$done = $request->body('done', false);
$task = updateTask($taskId, $title, $done);
return Response::ok($task, 'Task updated');
});
$api->delete(function (Request $request): Response {
$taskId = (int) $request->query('id');
removeTask($taskId);
return Response::noContent();
});
$api->run();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.