Cara menggunakan mysql rest api generator

Golang is a general-purpose programming language built for the multi-core reality of today’s computers (upwork).

In this article:

We will build a blog application where a user can:

  • Signup (Register)
  • Edit his account
  • Shutdown (Delete his account)
  • Create a blog post
  • Edit blog post created by him
  • View all blog posts
  • View a particular blog post
  • View other blog posts published by other users
  • Delete blog post created by him

This API will be built with:

  • Go
  • GORM (A Golang ORM)
  • JWT
  • Postgres
  • Mysql
  • Gorilla Mux (For HTTP routing and URL matcher)

You might be wondering seeing Postgres and Mysql. The API will be built in a way that you can decide to use Mysql or Postgres driver, simply by changing the configuration in the

touch .env
1.

All methods and endpoints will be thoroughly tested. Table tests will also be used to test every possible case for a particular functionality.

In Future Articles:

This article is just the first part. There will be future articles that will explain how to:

  • Dockerize the API
  • Deploy on Kubernetes
  • Integrate Travis, Coveralls, Code Climate, etc
  • Host the API on AWS, Digital Ocean and/or Heroku.
  • Consume the API endpoints using React/Vue

I actually summed everything together in this article here. Where I built a Forum App using Gin Framework. React is used as the Frontend Stack.

Setelah melakukan persiapan yang di sebutkan diatas, saatnya kita kan membuat CRUD, ada beberapa langkah yang harus di lakukan untuk membuat CRUD dengan database MySQL.

Buat database


Pada contoh kali ini kita akan menggunakan Dabase MySQL, buatlah Database menggunakan Tools seperti MySQL Workbench agar lebih mudah dalam membuat Database karena memiliki tampilan yang cukup baik dan mudah di gunakan.


Cara menggunakan mysql rest api generator


Pada gambar diatas saya membuat database dengan nama “nestjs_crud”

Prisma


Apa itu Prisma? Prisma adalah database Toolkit yang di buat untuk aplikasi berbasis Node JS dan menggunakan bahasa Typescript yang akan memudahkan kita dalam melakukan proses ke Database.


Kenapa Prisma?

Alasan saya menggunakan prisma yaitu karena Prisma memiliki fitur yang cukup lengkap di antaranya adalah

  • Data Modeling, kita bisa membuat schema seperti table - table, relasi, dengan membuat script schema tanpa harus berhubungan langsung dengan database

  • Migration, kita bisa melakukan proses migration dari shcema tabel - table yang sudah kita buat menjadi tabel - tabel yang ada di dalam database secara otomatis menggunakan Prisma CLI. Contoh:

    yarn add prisma --dev
    yarn add @prisma/client
    7

  • Synchronize, kita bisa melakukan Synchronize dari database yang sudah ada menjadi script Schema yang bisa kita gunakan untuk melakukan proses Migration atau sebaliknya. Contoh:

    yarn add prisma --dev
    yarn add @prisma/client
    8

Install Prisma


Masuk ke dalam project yang sudah di buat lalu buka terminal dan masukan perintah

npm i prisma --save-dev
npm i @prisma/client

atau

yarn add prisma --dev
yarn add @prisma/client

kemudian masukan perintah pada terminal

Setelah menjalankan perintah “npx prisma init” akan terbuat Folder “prisma” yang di dalamnya ada scheme dan juga file “.env” yang berisi settingan untuk koneksi Database.


Cara menggunakan mysql rest api generator


Untuk settingan MySQL, edit file “prisma/schema.prisma” menjadi seperti berikut init


kemudian edit file “.env” sesuai dengan koneksi dan Database MySQL yang sudah di buat sebelumnya

DATABASE_URL="mysql://root:mysql@localhost:3307/nestjs_crud"

Buat Module Prisma dan Service


Kita akan membuat Module Prisma yang berisi service yang akan di gunakan untuk service lain, jadi fungsi dari service yang akan kita buat ini adalah sebagai penghubung antara service ke Database, untuk lebih mudah di pahami silahkan ikuti saja tutorialnya supaya nanti akan mengerti.

Jalankan perintah untuk membuat Module

atau

kemudian Buat Service dengan perintah:

atau

perintah di atas kan membuat file baru seperti gambar dibawah ini


Cara menggunakan mysql rest api generator


Edit file “prisma.service.ts” menjadi :

import { INestApplication, Injectable, OnModuleInit } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';

@Injectable()
export class PrismaService extends PrismaClient
    implements OnModuleInit {

    async onModuleInit() {
        await this.$connect();
    }

    async enableShutdownHooks(app: INestApplication) {
        this.$on('beforeExit', async () => {
            await app.close();
        });
    }
}

Edit Module menjadi Global

Edit module menjadi Global supaya apa yang ada di module bisa di gunakan tanpa harus mengiport Module satu persatu.

import { Global, Module } from '@nestjs/common';
import { PrismaService } from './prisma.service';

@Global()
@Module({
  providers: [PrismaService],
  exports:[PrismaService]
})
export class PrismaModule {}

Untuk menggunakan service berbeda module kita harus mengexport terlebih dahulu, contohnya :

Buat Schema Biodata

model biodata {
  id          Int           @id @default(autoincrement())
  nama  String        @unique(map: "sliderCode_UNIQUE") @db.VarChar(45)
  nik  Int
  address  String?       @db.VarChar(200)
}

Migrate schema


Lakukan migrate schema supaya tersinkron dengan database yang sudah kita buat dengan mamasukan perintah

Setelah melakukan perintah diatas pastikan kita check database apakah sudah terbentuk table baru dengan nama biodata.

Cara menggunakan mysql rest api generator

setelah itu masukan perintah

Buat Module Biodata


Pada contoh kali ini saya akan membuat CRUD Biodata yang akan menampung data dari siswa seperti Nama, NIK, dan Alamat.


Masukan perintah:

npx nest g res crud/biodata


Perintah diatas adalah perintah untuk membuat CRUD secara cepat tanpa harus membuat Module, Service, Controller satu persatu.

Cara menggunakan mysql rest api generator


Pilih REST API karena kita akan membuat CRUD Rest API


Cara menggunakan mysql rest api generator


Setelah melakukan perintah diatas maka akan terbentuk struktur folder seperti


Cara menggunakan mysql rest api generator


Hapus folder “entities” karena tidak kita gunakan


Cara menggunakan mysql rest api generator

Edit DTO (Data Transfer Object)


Apa itu Data Transfer Object atau DTO?


DTO adalah Type, atau Class yang berisi nama - nama parameter dan type data yang dikirimkan dari Request yang digunakan untuk tujuan agar parameter yang dikirim melalui Request sesuai dengan apa yang di inginkan dan bisa digunakan untuk proses Validasi terhadap data yang dikirim.

Cara menggunakan mysql rest api generator


Pada gambar diatas sebelum request ke controller, request akan melalu DTO terlebih dahulu untuk memastikan apakah data yang dikirim sesuai atau tidak. Jika sesuai maka akan di teruskan ke controller dengan data yang dikirim, jika tidak sesuai maka akan mengirimkan Error bahwa data yang dikirim tidak sesuai apa yang ada di DTO

Cara menggunakan mysql rest api generator


Setelah memahami DTO selanjutnya kita akan edit DTO sesuai dengan schema Table yang sebelumnya kita buat.

Install Validator

Kita akan menginstall library untuk Validatornya

yarn add class-validator class-transformer

atau

npm i --save class-validator class-transformer


Edit file “crud/biodata.dto/create-biodatum.dto.ts”

export class CreateBiodatumDto {}


Menjadi

yarn add prisma --dev
yarn add @prisma/client
0

Tambahkan Pipe pada Controller


Edit controller “crud/biodata/biodata.controller.ts”

yarn add prisma --dev
yarn add @prisma/client
1

Menjadi

yarn add prisma --dev
yarn add @prisma/client
2

Pada file di atas kita menambahkan

yarn add prisma --dev
yarn add @prisma/client
3


Fungsi di atas supaya Class Validator yang ada di DTO bekerja, kalau tidak menambahkan script di atas maka Validator tidak akan berkerja

Ubah semua fungsi di controller menjadi async dan await

yarn add prisma --dev
yarn add @prisma/client
4

Penjelasan

adalah nama controller yang sekaligus menjadi route yang bisa langsung di akses via API.


Untuk contoh controller di atas, akses API nya adalah http://localhost:3000/biodata


@Post(), @Get(),@Patch(‘:id’), @Delete(‘:id’) adalah Request Method dari client

Membuat fungsi Create, Get, Update, Delete pada Service


Edit file “biodata.service.ts”

yarn add prisma --dev
yarn add @prisma/client
5

Menjadi

yarn add prisma --dev
yarn add @prisma/client
6

Penjelasan

  • create digunakan untuk membuat Biodata baru
  • findAll digunakan untuk menampilkan semua biodata
  • findOne digunakan untuk menampilkan biodata berdasarkan id
  • update digunakan untuk mengubah biodata berdasarkan id
  • remove digunakan untuk menghapus biodata berdasarkan id

Jalankan Aplikasi


Jalankan aplikasi dengan terminal dan masukan perintah\

atau


Endpoint dari NestJS secara default adalah port 3000, jadi untuk membuat request URL nya adalah http://localhost:3000


Jika tidak ada error makan akan tampil seperti gambar dibawah ini

Cara menggunakan mysql rest api generator

Uji coba menggunakan Postman

Untuk menguji API yang sudah kita buat saya akan menggunakan Postman

  • Buat Biodata & Test DTO dengan memasukan type data yang salah misal nik di kasih type data String, seharusnya muncul error

Cara menggunakan mysql rest api generator

pada gambar Postman di atas terjadi error karena kita memberi NIK dengan type data String, berarti DTO Validator sudah bekerja dengan baik

Bagaimana cara kerja REST API?

Cara Kerja RESTful API RESTful API bekerja dengan cara memanipulasi resource dan representasi. Representasi ini saling dipertukarkan di antara pengguna dan server melalui antarmuka terstandar dan protokol komunikasi tertentu, biasanya HTTP.

Apa itu REST API dan fungsinya?

API RESTful adalah antarmuka yang digunakan oleh dua sistem komputer untuk bertukar informasi secara aman melalui internet. Sebagian besar aplikasi bisnis harus berkomunikasi dengan aplikasi internal dan pihak ketiga lainnya untuk melakukan berbagai tugas.

Apa makna rest dalam REST API?

RESTful API / REST API merupakan penerapan dari API (Application Programming Interface). Sedangkan REST (Representional State Transfer) adalah sebuah arsitektur metode komunikasi yang menggunakan protokol HTTP untuk pertukaran data dimana metode ini sering diterapkan dalam pengembangan aplikasi.

Apa Perbedaan API dengan REST API?

Apa perbedaan API dengan REST API? - Quora. Sederhananya, API adalah sebuah penghubung antara aplikasi yang kita buat dengan aplikasi yang lain. Tujuannya adalah untuk saling berbagi data anatar aplikasi tersebut. Sedangkan REST itu adalah salah satu dari desain arsitektur di dalam API.