Proses Instalasi SLIM:
1. instalasi composer terlebih dahulu. kunjungi halaman https://getcomposer.org/.
- download composer.phar
3. setelah selesai SLIM Framework telah dapat digunakan dengan mengeksekusi command
Proses hello word untuk routing pertama:
1. open file projek dan buka /publik/index.php, tambahkan kode berikut sebelum $app->run():
3. akses link pada browser localhost:8000/hello/ardhi
Proses Koneksi ke database Mysql:
1. buat database pada mysql dengan nama "restapi"
2. buat tabel dengan nama "tasks"
4. tambahkan kode berikut
5. akses data. buka /publik/index.php, tambahkan kode berikut sebelum $app->run():
Proses filter akses yang diizinkan:
1.
ref:
http://www.slimframework.com
http://www.slimframework.com/docs/tutorial/first-app.html
https://arjunphp.com/creating-restful-api-slim-framework/
1. instalasi composer terlebih dahulu. kunjungi halaman https://getcomposer.org/.
- download composer.phar
$ curl -sS https://getcomposer.org/installer | php
atau kunjungihttps://getcomposer.org/composer.phar
- install composer$ php composer.phar install
2. install slim-skeleton (bundle)$ php composer.phar create-project slim/slim-skeleton [my-app-name]
$ php composer.phar create-project slim/slim-skeleton mySlim
atau$ composer create-project slim/slim-skeleton mySlim
tunggu hingga proses instalasi selesai3. setelah selesai SLIM Framework telah dapat digunakan dengan mengeksekusi command
$ composer start
buka web dengan address localhost:8080Proses hello word untuk routing pertama:
1. open file projek dan buka /publik/index.php, tambahkan kode berikut sebelum $app->run():
$app->get('/hello/{name}', function (Request $request, Response $response) {
$name = $request->getAttribute('name');
$response->getBody()->write("Hello, $name");
return $response;
});
2. save3. akses link pada browser localhost:8000/hello/ardhi
__________________________________________________
___________________________________________________
Proses Koneksi ke database Mysql:
1. buat database pada mysql dengan nama "restapi"
2. buat tabel dengan nama "tasks"
--
-- Table structure for `tasks`
--
CREATE TABLE IF NOT EXISTS `tasks` (
`id` int(11) NOT NULL,
`task` varchar(200) NOT NULL,
`status` tinyint(1) NOT NULL DEFAULT '1',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `tasks` ADD PRIMARY KEY (`id`);
ALTER TABLE `tasks` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
3. tambahkan data pada tabel tersebutINSERT INTO `tasks` (`id`, `task`, `status`, `created_at`) VALUES
(1, 'Find bugs', 1, '2016-04-10 23:50:40'),
(2, 'Review code', 1, '2016-04-10 23:50:40'),
(3, 'Fix bugs', 1, '2016-04-10 23:50:40'),
(4, 'Refactor Code', 1, '2016-04-10 23:50:40'),
(5, 'Push to prod', 1, '2016-04-10 23:50:50');
3. buka file settings.php di /src/settings.php4. tambahkan kode berikut
<?php
return [
'settings' => [
'displayErrorDetails' => true, // set to false in production
'addContentLengthHeader' => false, // Allow the web server to send the content-length header
'determineRouteBeforeAppMiddleware' => true,
// Renderer settings
'renderer' => [
'template_path' => __DIR__ . '/../templates/',
],
// Monolog settings
'logger' => [
'name' => 'slim-app',
'path' => __DIR__ . '/../logs/app.log',
'level' => \Monolog\Logger::DEBUG,
],
"db" => [
"host" => "localhost",
"dbname" => "restapi",
"user" => "user",
"pass" => "password",
],
],
];
5. buka file dependencies.php di /src/dependencies.php<?php
// DIC configuration
$container = $app->getContainer();
// view renderer
$container['renderer'] = function ($c) {
$settings = $c->get('settings')['renderer'];
return new Slim\Views\PhpRenderer($settings['template_path']);
};
// monolog
$container['logger'] = function ($c) {
$settings = $c->get('settings')['logger'];
$logger = new Monolog\Logger($settings['name']);
$logger->pushProcessor(new Monolog\Processor\UidProcessor());
$logger->pushHandler(new Monolog\Handler\StreamHandler($settings['path'], $settings['level']));
return $logger;
};
$container['db'] = function ($c) {
$settings = $c->get('settings')['db'];
$pdo = new PDO("mysql:host=" . $settings['host'] . ";dbname=" . $settings['dbname'],
$settings['user'], $settings['pass']);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
return $pdo;
};
4. sekarang kamu dapat mengakses database dengan syntax $this->db5. akses data. buka /publik/index.php, tambahkan kode berikut sebelum $app->run():
$app->group('/api/v1', function () use ($app) {
// get all todos
$app->get('/todos', function ($request, $response, $args) {
$sth = $this->db->prepare("SELECT * FROM tasks ORDER BY task");
$sth->execute();
$todos = $sth->fetchAll();
return $this->response->withJson($todos);
});
// Retrieve todo with id
$app->get('/todo/[{id}]', function ($request, $response, $args) {
$sth = $this->db->prepare("SELECT * FROM tasks WHERE id=:id");
$sth->bindParam("id", $args['id']);
$sth->execute();
$todos = $sth->fetchObject();
return $this->response->withJson($todos);
});
// Search for todo with given search teram in their name
$app->get('/todos/search/[{query}]', function ($request, $response, $args) {
$sth = $this->db->prepare("SELECT * FROM tasks WHERE UPPER(task) LIKE :query ORDER BY task");
$query = "%".$args['query']."%";
$sth->bindParam("query", $query);
$sth->execute();
$todos = $sth->fetchAll();
return $this->response->withJson($todos);
});
// Add a new todo
$app->post('/todo', function ($request, $response) {
$input = $request->getParsedBody();
$sql = "INSERT INTO tasks (task) VALUES (:task)";
$sth = $this->db->prepare($sql);
$sth->bindParam("task", $input['task']);
$sth->execute();
$input['id'] = $this->db->lastInsertId();
return $this->response->withJson($input);
});
// DELETE a todo with given id
$app->delete('/todo/[{id}]', function ($request, $response, $args) {
$sth = $this->db->prepare("DELETE FROM tasks WHERE id=:id");
$sth->bindParam("id", $args['id']);
$sth->execute();
$todos = $sth->fetchAll();
return $this->response->withJson($todos);
});
// Update todo with given id
$app->put('/todo/[{id}]', function ($request, $response, $args) {
$input = $request->getParsedBody();
$sql = "UPDATE tasks SET task=:task WHERE id=:id";
$sth = $this->db->prepare($sql);
$sth->bindParam("id", $args['id']);
$sth->bindParam("task", $input['task']);
$sth->execute();
$input['id'] = $args['id'];
return $this->response->withJson($input);
});
});
6. sekarang kita dapat mengakses data yang ada di data base dengan mengakses1.
ref:
http://www.slimframework.com
http://www.slimframework.com/docs/tutorial/first-app.html
https://arjunphp.com/creating-restful-api-slim-framework/
No comments:
Post a Comment