Tutorial Restful Service Untuk Login Aplikasi
Tags: backend, restapi, tutorial
Published: 2022-11-25 13:51:02

Tutorial ini ditulis oleh:
**Nama : Ryan Nugroho
NIM : A11.2021.13482
Kelp. : A11.4306**

---


REST (REpresentational State Transfer) merupakan standar arsitektur komunikasi berbasis web yang sering diterapkan dalam pengembangan layanan berbasis web. Umumnya menggunakan HTTP (Hypertext Transfer Protocol) sebagai protocol untuk komunikasi data. REST pertama kali diperkenalkan oleh Roy Fielding pada tahun 2000. ([Codepolitan](https://codepolitan.com/blog/mengenal-restful-web-services))

Pada artikel ini, penulis akan memberikan tutorial bagaimana cara membuat Restful Service untuk Login Aplikasi. Dengan berlandaskan studi kasus proyek tugas akhir penulis yang berjudul Convertin Aja.

> Catatan: login aplikasi hanya menggunakan akun Google atau alamat email tanpa password.

Sebelum memulai tutorial, perlu disiapkan beberapa software yang nantinya akan digunakan, antara lain:

- Code Editor (Visual Code, Notepad++, dll)

- Postman

- Databases (SQLite, Mysql, dll), pada tutorial kali ini penulis menggunakan database SQLite.

# Langkah-langkah membuat REST API

Berikut Tutorial atau Langkah - langkah dalam membuat REST API.


##Buat file dengan nama index.php


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qif5z9k8syfu7k5676ci.png)


##Kemudian isikan file tersebut dengan coding sebagai berikut: 

- untuk membuat database jika database belum dibuat, dengan catatan bahwa database yang digunakan adalah _SQLite_.

```
<?php

$file_db = "login.db";

try {
    $pdo = new PDO("sqlite:$file_db");
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXEPTIION);
    $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

    $sql_create = "CREATE TABLE IF NOT EXISTS 'login'(
        'id' integer NOT NULL PRIMARY KEY AUTOINCREMENT,
        'email' text NOT NULL,
        'created_at' datetime NOT NULL DEFAULT CURRENT_TIMESTAMP)";
    $pdo->exec($sql_create);
} catch (PDOException $e) {
    throw new PDOException($e->getMessage(), (int)$e->getCode());
}
```

- membuat header yang nantinya akan menginformasikan tentang jenis data yang dikembalikan, mis::JSON,gambar(png,jpg,dll..),html. Perlu diingat, bahwa JSON dalam JavaScript adalah sebuah array atau objek.

```
header('Content-Type: application/json');
```

- membuat method untuk menampilkan, menambah, dan menghapus data. Perlu diketahui bahwa terdapat beberapa method yang umumnya digunakan, seperti: 
 - **GET**, menyediakan hanya akses baca pada resource
 - **PUT**, digunakan untuk menciptakan resource baru
 - **DELETE**, digunakan untuk menghapus resource
 - **POST**, digunakan untuk memperbarui resource yang ada atau membuat resource baru
 - **OPTIONS**, digunakan untuk mendapatkan operasi yang disupport pada resource.

Pada tutorial kali ini, penulis hanya menggunakan 3 method yaitu GET, POST, dan DELETE.

```
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    # untuk mengakses data dari server
    $query = 'select * from login order by created_at desc';
    $stmt = $pdo->prepare($query);
    $stmt->execute();
    $data = $stmt->fetchAll(PDO::FETCH_ASSOC);
    echo json_encode($data);
} elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
    # untuk menambahkan data baru dari server
    $email = $POST['email'];
    $query = "insert into login (email) values (?)";
    $stmt = $pdo->prepare($query);
    $res = $stmt->execute($email);
    if ($res){
        $data = ['email'=>$email];
        echo json_encode($data);
    } else {
        echo json_encode(['error'=>$stmt->errorCode()]);
    }
} elseif ($_SERVER['REQUEST_METHOD'] === 'DELETE') {
    # untuk menghapus data dari server
    $id = $_GET['id'];
    $query = "delete from login where id =?";
    $stmt = $pdo->prepare($query);
    $res = $stmt->execute($id);
    if ($res){
        $data = ['id'=>$id];
        echo json_encode($data);
    } else {
        echo json_encode(['error'=>$stmt->errorCode()]);
}
```


##Selanjutnya, save file tersebut dan cobalah pada _Postman_.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kistddph1g3iq0hoze4t.jpeg)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jqbygl3cg5uxjtqmb508.jpeg)

##Jika sudah, cek file login.db pada _SQLite_, apakah sudah terisi atau belum.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/52btx9f8gb0wcgp30wx3.png)

---

Demikian tutorial yang penulis bisa sampaikan, jika ada pertanyaan silahkan tanyakan di kolom komentar.

~~Terima Kasih