API Python (Flask dan MongoDB) #6 - Menampilkan Data


1. Buka Project pada tutorial ke 2
2. Tambahkan Perintah Berikut ini 
...
@app.route('/tampil', methods=['POST'])
def tampil():
try:
data = request.form.to_dict()
data_token = jwt.decode(data['token'], secret_key, algorithms=['HS256'], verify=True)
mahasiswa_id = data_token['_id']
matkuls = mongo.db['matkul'].find({'mahasiswa_id': mahasiswa_id})
result = []
for matkul in matkuls:
result.append({
'id': str(matkul['_id']),
'nama': matkul['nama'],
'dosen': matkul['dosen']
})
return jsonify({'info': 'OK','data' : result})
except jwt.ExpiredSignatureError:
return jsonify({'info': 'Token Kedaluwarsa'})
except jwt.InvalidTokenError:
return jsonify({'info': 'Token Salah'})

...
3. Pastikan Project Sudah Di Run
4. Uji Coba di Postman
Method : POST 
URL : http://localhost:5000/tampil
Form data : 
    token => ambil_dari Login
 





API Python (Flask dan MongoDB) #5 - Insert Data


1. Buka Project pada tutorial ke 2
2. Tambahkan Perintah Berikut ini 
...
@app.route('/tambah', methods=['POST'])
def tambah():
try:
data = request.form.to_dict()
data_token = jwt.decode(data['token'], secret_key, algorithms=['HS256'], verify=True)
mahasiswa_id = data_token['_id']
matkul = mongo.db['matkul'].insert_one({'nama': data['nama'], 'dosen': data['dosen'], 'mahasiswa_id': mahasiswa_id})
return jsonify({'info': 'Mata Kuliah Berhasil Disimpan', 'id': str(todo_id.inserted_id)})
except jwt.ExpiredSignatureError:
return jsonify({'info': 'Token Kedaluwarsa'})
except jwt.InvalidTokenError:
return jsonify({'info': 'Token Salah'})

...
3. Pastikan Project Sudah Di Run
4. Uji Coba di Postman
Method : POST 
URL : http://localhost:5000/login
Form data : 
    nama => Bahasa
    dosen => Dosen 1
    token => ambil_dari Login
 



API Python (Flask dan MongoDB) #4 - Login dan Token


1. Buka Project pada tutorial ke 2
2. Tambahkan Perintah Berikut ini 
...
from werkzeug.security import generate_password_hash, check_password_hash
from datetime import timedelta, datetime
import jwt
...

@app.route("/login",methods=['POST'])
def login():
data = request.form.to_dict()

user = mongo.db['mahasiswa'].find_one({'nim': data['nim']})
if not user or not check_password_hash(user['sandi'],data['sandi']):
return jsonify({'info': 'Username dan Sandi Salah'}), 401
payload = {'_id': str(user['_id']), 'exp': datetime.utcnow()+timedelta(minutes=130)}
access_token = jwt.encode(payload, secret_key, algorithm='HS256')
return jsonify({'access_token': access_token})


...
3. Pastikan Project Sudah Di Run
4. Uji Coba di Postman
Method : POST 
URL : http://localhost:5000/login
Form data : 
    nim => 1001
    sandi => 123

Keluar Token yang akan digunakan untuk melakukan manipuasi data


API Python (Flask dan MongoDB) #3- Membuat Tabel Di Mongo


1. Cek Terlebih Dahulu Mongo Server di Terminal Menggunakan Perintah 
sudo systemctl status mongod

2.  Buka Mongo Compas untuk mendapatkan link koneksi ke Server Mongo

mongodb://localhost:27017

3. Edit File "app.py" Menjadi seperti di bawah ini 

from flask import Flask, request, jsonify
from flask_pymongo import PyMongo
from werkzeug.security import generate_password_hash

app = Flask(__name__)

secret_key = '123456'

app.config['MONGO_URI'] = 'mongodb://localhost:27017/kampus'

mongo = PyMongo(app)

@app.route('/')
def index():
return 'Selamat Datang di API Mongo dan Flask'

@app.route('/daftar',methods=['POST'])
def daftar():
data = request.form.to_dict()

if mongo.db['mahasiswa'].find_one({'nim':data['nim']}):
return jsonify({'info':'NIM Sudah Ada'})
elif data['nim'] and data['nama'] and data['sandi']:
id = mongo.db['mahasiswa'].insert_one({'nim': data['nim'],'nama':data['nama'],'sandi': generate_password_hash(data['sandi'])})
return jsonify({'info': 'Berhasil Disimpan'})
else:
return jsonify({'info': 'Data Kosong/Lengkapi Data'})

if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)

4. Jalan Project
pyton3 app.py


5. Uji Coba di Posman
Method : POST 
URL : http://localhost:5000/daftar
Form data :
    nim => 1001
    nama => Siswa 1
    sandi => 123


6. Lihat Hasil di Compas











API Python (Flask dan MongoDB) #2 - Membuat Project dan Instalasi Flask


Membuat Project dan Instalasi Flask

1. Buat Folder contohnya "latihan1"
2. Buka aplikasi text editor "VSCode"
3. Buka Folder latihan pada VsCode

File > Open Folder ...[CTRL+K CTRL+O] kemudian Pilih Folder Latihan1



4. Buka Terminal di VsCode

Terminal > New Terminal 


5. Buat Environment menggunakan terminal di VsCode

python3 -m venv .venv

6. Mengaktifkan Environment menggunakan Terminal di VsCode

. .venv/bin/activate


7. Instalasi Flask Menggunakan Perintah 

pip3 install Flask

8. Install Plugin Mongo 

pip3 install flask_pymongo

9. Install JWT

pip3 install PyJWT

10. Melihat Plugin yang terinstall 

pip3 list



11. Buat File "app.py" 


12. Isi file app.py 

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
return "Berhasil Install Flask"

if __name__ == '__main__':
app.run(port=5000, debug=True)

13. Menjalankan Project di terminal menggunakan python

python3 app.py


    Ini digunakan untuk autoreload saat perubahan coding 


14. Menjalankan Project Menggunaan Flask

flask run    

15. Jika Berhasil Di Jalankan 




















API Python (Flask dan MongoDB) #1 - Instalasi Aplikasi



INSTALASI KEBUTUHAN APLIKASI 


Instalasi Python Pada Linux 

1. Buka Terminal Di Linux

2. Ketikkan Perintah 

sudo apt-get install -y python3.8 

3. Melihat Versi Python

python3 -V

Instalasi MongoDB Server di Linux

1. Buka Terminal

2. Perintah Instalasi GNUPG

sudo apt-get install gnupg

3. Download APT untuk MongoDB

curl -fsSL https://pgp.mongodb.com/server-6.0.asc | \ 
    sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg \ 
    --dearmor

4. Update Repo Linux

sudo apt-get update

5. Instalasi MongoDB

sudo apt-get install -y mongodb-org

6. Menjalankan MongoDB

sudo systemctl start mongod

7. Melihat Status Mongo DB

sudo systemctl status mongod

8. Menghentikan Mongo DB

sudo systemctl stop mongod

Instalasi Compas untuk Client MongoDB

1. Download sesuai versi sistem operasi di https://www.mongodb.com/try/download/compass

2. Buka terminal pada lokasi file download 

3. Rubah Mode File 

chmod +x mongodb-compass_1.38.0_amd64.deb

3. Instalasi aplikasi deb menggunaka perintah 

sudo dpkg -i mongodb-compass_1.38.0_amd64.deb

4. Jika ada informasi gagal instalasi gunakan perintah

sudo apt-get install -f

Instalasi Postman

1. Download Postman di https://www.postman.com/downloads/
2. Extract File yang di download
3. Jalankan Postman

Instalasi VsCode

1. Download Aplikasi di  https://code.visualstudio.com/
2. Download File .deb
3. Buka Terminal pada file yang di download 
4. Rubah Mode File menggunakan perintah 

chmod +x code_1.79.2-1686734195_amd64.deb

5. Install Menggunakan perintah 

sudo dpkg -i code_1.79.2-1686734195_amd64.deb

6. Jika ada informasi gagal gunakan perintah di bawah ini 

sudo apt-get install -f 

Flutter #5 - Tampilan Sederhana dengan Stateless Widget


Stateless Widget dapat diartikan sebagai Widget yang tidak dapat dirubah atau tidak akan pernah berubah.

Misal kita mempunya widget yang berisi text “Buku yang dibaca : 1” maka dari mulai text itu dibuat sampai aplikasi berjalan pun text tersebut tetap akan selalu menjadi “Buku yang dibaca : 1“.

Langkah - Langkahnya : 
1. Tambahkan kode dibawah pada method main
runApp(HomePage());
2. Buat Class HomePage dengan StatelessWidget yang mengembalikan Nilai method MaterialApp
class HomePage extends StatelessWidget{
Widget build(BuildContext context){
return MaterialApp(

);
}
}
Setiap Membuat Class dengan StatelessWidget harus menambahkan Widget build yang nantinya akan memiliki return berupa method MaterialApp.

3. Tampilan Home dengan Method Scaffold yang memiliki appBar dan body
home: Scaffold(
appBar: AppBar(

),
body: Center(

),
),

4. Mengisi title AppBar dengan Method Text
appBar: AppBar(
title: Text("Judul")
),
5. Mengisi child pada method Center untuk tampilan Body Dengan menambahkan text menggunakan Method Text
body: Center(
child: Text("Isi App")
),

Tampilan Lengkapnya Seperti Dibawah Ini 

import 'package:flutter/material.dart';

main(){
runApp(HomePage());
}

class HomePage extends StatelessWidget{
Widget build(BuildContext context){
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("Judul")
),
body: Center(
child: Text("Isi App")
),
),
);
}
}