Cum să definești endpoint-uri API în Python — GET, POST, PUT, DELETE
In this tutorial, you'll learn about Cum să definești endpoint. We cover key concepts, practical examples, and best practices to help you understand and apply this topic effectively.
Endpoint-urile API sunt punctele de acces prin care clienții interacționează cu serverul. Fiecare endpoint corespunde unei resurse și unei operații HTTP. În acest ghid vei învăța cum să definești corect endpoint-uri GET, POST, PUT și DELETE.
Problema
Clienții nu pot accesa sau modifica resursele serverului fără endpoint-uri bine definite. Un API fără o structură clară de endpoint-uri duce la confuzie și erori de integrare.
Soluția Rapidă
1. GET — citirea resurselor
# FastAPI
from fastapi import FastAPI
app = FastAPI()
elemente = []
@app.get("/elemente")
def lista_elemente():
return elemente
@app.get("/elemente/{id}")
def element(id: int):
for e in elemente:
if e["id"] == id:
return e
return {"eroare": "Elementul nu exista"}, 404
# Flask
from flask import Flask, jsonify
app = Flask(__name__)
elemente = []
@app.route("/elemente", methods=["GET"])
def lista_elemente():
return jsonify(elemente)
2. POST — crearea resurselor
# FastAPI
from pydantic import BaseModel
class Element(BaseModel):
nume: str
pret: float
@app.post("/elemente", status_code=201)
def creaza_element(e: Element):
element_id = len(elemente) + 1
elemente.append({"id": element_id, **e.model_dump()})
return elemente[-1]
# Flask
from flask import request
@app.route("/elemente", methods=["POST"])
def creaza_element():
data = request.get_json()
element_id = len(elemente) + 1
elemente.append({"id": element_id, **data})
return jsonify(elemente[-1]), 201
3. PUT — actualizarea completă
@app.put("/elemente/{id}")
def actualizeaza_element(id: int, e: Element):
for i, elem in enumerate(elemente):
if elem["id"] == id:
elemente[i] = {"id": id, **e.model_dump()}
return elemente[i]
return {"eroare": "Nu exista"}, 404
4. DELETE — ștergerea resurselor
@app.delete("/elemente/{id}", status_code=204)
def sterge_element(id: int):
for i, elem in enumerate(elemente):
if elem["id"] == id:
elemente.pop(i)
return
return {"eroare": "Nu exista"}, 404
Prevenție
- Folosește substantive la plural pentru numele resurselor (
/utilizatori,/produse) - Returnează status code-uri corecte: 200 pentru succes, 201 pentru creare, 204 pentru ștergere fără conținut
- Validează datele de intrare cu Pydantic (FastAPI) sau manual (Flask)
Greșeli Comune
- Folosirea verbelor în URL --
/getUtilizatoriîn loc deGET /utilizatori - Status code 200 pentru creare -- POST trebuie să returneze 201, nu 200
- Lipsa validării ID-ului -- un ID invalid (string în loc de int) ar trebui să returneze 400
- Confuzia între PUT și PATCH -- PUT înlocuiește întreaga resursă, PATCH doar câmpurile trimise
- Returnarea listei goale ca eroare -- un GET pe o listă goală returnează
[]cu 200, nu 404
Exercițiu Practic
Construiește un API cu endpoint-uri CRUD pentru o resursă comenzi cu câmpurile: produs, cantitate, pret. Implementează toate cele patru operații.
FAQ
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro