Skip to content

Cum să definești endpoint-uri API în Python — GET, POST, PUT, DELETE

DodaTech Updated 2025-01-15 2 min read

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

  1. Folosirea verbelor în URL -- /getUtilizatori în loc de GET /utilizatori
  2. Status code 200 pentru creare -- POST trebuie să returneze 201, nu 200
  3. Lipsa validării ID-ului -- un ID invalid (string în loc de int) ar trebui să returneze 400
  4. Confuzia între PUT și PATCH -- PUT înlocuiește întreaga resursă, PATCH doar câmpurile trimise
  5. 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

### Ce este un endpoint API?

Un endpoint API este o cale URL specifică (ex: /api/utilizatori) asociată cu o metodă HTTP (GET, POST, PUT, DELETE) care execută o operație pe server.

GET și POST pot folosi aceeași cale URL?

Da, atâta timp cât metodele HTTP sunt diferite. GET /elemente și POST /elemente sunt două endpoint-uri distincte.

Ce returnează DELETE?

DELETE returnează de obicei status 204 No Content fără body. Dacă resursa nu există, returnează 404.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro