docker compose up --build
FE= http://localhost:8000 BE= http://localhost:8080
REST API ini adalah implementasi dari API Pokemon tanpa menggunakan database. REST API ini dibuat menggunakan bahasa Go dan menggunakan library net/http
dan github.com/gorilla/mux
untuk manajemen routing.
Pada contoh REST API Pokemon ini, informasi Pokemon disimpan sebagai variabel slice dalam struct. Slice ini berfungsi sebagai mock database, yaitu sebagai pengganti database yang sesungguhnya. Oleh karena itu, informasi Pokemon disimpan secara lokal dalam memori aplikasi dan tidak perlu terhubung ke database eksternal.
Untuk menggunakan REST API ini terdapat 2 cara, Running with Go atau Running with Docker
cara pertama Anda harus memastikan bahwa Anda sudah menginstal Go pada komputer Anda.
- Clone repository ini:
$ https://github.com/shinochiha/pokemon-api-not-db.git
- Masuk ke direktori pokemon-api-not-db:
$ cd pokemon-api-not-db
- Jalan kan perintah go mod tidy untuk mendownload package yang di perlukan
$ go mod tidy
- Jalankan perintah go build untuk mengcompile file:
$ go build
- Jalankan file hasil compile:
$ ./pokemon-api
Cara ke kedua Anda harus menginstal Docker terlebih dahulu di mesin Anda. Kemudian, Clone repository dan buat image Docker menggunakan perintah berikut di terminal:
$ docker build -t pokemon-api .
Setelah image berhasil di buat, jalankan perintah berikut untuk start container:
$ docker run -p 8080:8080 -i -t pokemon-api
Setelah REST API ini berjalan, Anda dapat mengaksesnya melalui browser atau aplikasi lain seperti Postman. Berikut adalah daftar endpoint yang tersedia:
Mendapatkan daftar Pokemon. (data default nya 20)
URL: http://localhost:8080/pokemon
Method: GET
Note : jika ingin lebih dari 20 maka tambahkan params ?limit_poke_api={jumlah yang di inginkan}
Contoh: http://localhost:8080/pokemon?limit_poke_api=1279
Mendapatkan detail dari Pokemon tertentu.
URL: http://localhost:8080/pokemon/{id}
Method: GET
Contoh: http://localhost:8080/pokemon/1
Menambahkan Pokemon baru ke daftar saya.
URL: http://localhost:8080/pokemon/{id}
Method: POST
Contoh: http://localhost:8080/pokemon/1
Note : Saat Menangkap pokemon jika success ratenya mencapai lebih dari 50% maka masukkan nickname yang di inginkan melalui terminal proses POST tidak akan selesai jika belum memasukkan nickname melalui terminal jika di bawah 50% maka akan ada pesan error failed to catch pokemon
Give a nickname for your new pokemon: mypokemonnickname
Daftar Pokemon saya yang sudah di tangkap
URL: http://localhost:8080/mypokemon
Method: GET
Contoh:
{
"count": 1,
"results": [
{
"id": 1,
"name": "bulbasaur",
"nickname": "poke-poke",
"height": 7,
"weight": 69,
"sprites": {
"back_default": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/back/1.png",
"front_default": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/1.png"
}
}
]
}
Mengubah nickname data Pokemon tertentu yang ada di daftar saya.
URL: http://localhost:8080/mypokemon/{id}/{nickname}
Method: PUT
Contoh: http://localhost:8080/mypokemon/1/poke-poke
{
"message": "Nickname changed successfully",
"nickname": "poke-poke-0"
}
nickname akan berubah menjadi ada -0 karena mengikuti fibonachi
Menghapus Pokemon tertentu dari daftar pokemon saya.
URL: http://localhost:8080/mypokemon/{id}?release={primeNumber}
Method: DELETE
Contoh: http://localhost:8080/mypokemon/1?release=5 (pilih angka prima apa saja untuk membebaskan pokemon)
{
"message": "Pokemon has been released successfully."
}
jika memilih angka selain prima akan terkena error # Can't release the pokemon with this number