Python → Python projekti → Flask REST API


□ Ovo je prvi korak ka backend developeru.

Python projekat – REST API u Flask-u


U ovom projektu napravićemo jednostavan REST API koristeći Python i Flask framework.

API omogućava komunikaciju između aplikacija putem HTTP zahteva:

  • GET — čitanje podataka
  • POST — dodavanje novih podataka
  • PUT — izmena podataka
  • DELETE — brisanje podataka
U ovom projektu koristićemo:
  • Flask framework
  • JSON format
  • rad sa rutama (routes)
  • osnove backend programiranja

Šta je REST API?

REST API je način komunikacije između klijenta i servera.

  • frontend (web ili mobilna aplikacija) šalje zahtev
  • backend (Python server) vraća podatke
REST API je osnova modernih web, mobilnih i IoT aplikacija.

Instalacija Flask-a


pip install flask

Primer REST API aplikacije


from flask import Flask, jsonify, request

app = Flask(__name__)

# lista podataka
items = [
    {"id": 1, "name": "Laptop"},
    {"id": 2, "name": "Telefon"}
]

# pomoćna funkcija za ID
def next_id():
    return max(item["id"] for item in items) + 1 if items else 1

# GET - svi podaci
@app.route('/items', methods=['GET'])
def get_items():
    return jsonify(items)

# GET - jedan item
@app.route('/items/<int:item_id>', methods=['GET'])
def get_item(item_id):
    for item in items:
        if item["id"] == item_id:
            return jsonify(item)
    return jsonify({"error": "Nije pronađeno"}), 404

# POST - dodavanje
@app.route('/items', methods=['POST'])
def add_item():
    data = request.json
    new_item = {
        "id": next_id(),
        "name": data.get("name", "Bez imena")
    }
    items.append(new_item)
    return jsonify(new_item), 201

# PUT - izmena
@app.route('/items/<int:item_id>', methods=['PUT'])
def update_item(item_id):
    data = request.json
    for item in items:
        if item["id"] == item_id:
            item["name"] = data.get("name", item["name"])
            return jsonify(item)
    return jsonify({"error": "Nije pronađeno"}), 404

# DELETE - brisanje
@app.route('/items/<int:item_id>', methods=['DELETE'])
def delete_item(item_id):
    global items
    items = [item for item in items if item["id"] != item_id]
    return jsonify({"message": "Obrisano"})

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

Kako testirati API?

API možeš testirati na više načina:

  • pregledač (GET zahtevi)
  • Postman ili Insomnia
  • Python (requests biblioteka)
Primer URL-a:

http://127.0.0.1:5000/items

Kako radi ovaj kod?

  • Flask() kreira aplikaciju
  • @app.route definiše rute (URL-ove)
  • jsonify() vraća JSON odgovor
  • request.json prima podatke
  • metode (GET, POST...) određuju akciju
Svaka ruta predstavlja jednu funkcionalnost API-ja.

Česte greške

  • ❌ Pogrešan URL (npr. /item umesto /items)
  • ❌ Zaboravljen JSON body u POST/PUT
  • ❌ Pogrešan Content-Type (treba application/json)
  • ❌ Ne postoji ID koji pokušavaš da menjaš

Mala unapređenja (sledeći korak)

  • dodati polja: cena, opis
  • validacija podataka
  • filtriranje i pretraga
  • paginacija (više rezultata)

Šta dalje?

Napredni REST API projekat

Ovo je osnovna verzija API-ja (bez baze podataka).

U naprednom projektu naučićeš:

  • rad sa bazom (SQLite)
  • organizaciju koda (moduli)
  • autentifikaciju korisnika
  • pravi backend sistem

□ Napredni REST API projekat →


Mini izazovi

  • Dodaj polje price
  • Dodaj pretragu po imenu
  • Dodaj endpoint za broj elemenata

Gde se koristi REST API?

  • web aplikacije
  • mobilne aplikacije
  • frontend (React, Vue)
  • IoT sistemi

Sledeći projekat