APIView och funktionsbaserade @api_view
Bygg endpoints på två sätt
APIView och funktionsbaserade @api_view är en gratis lektion i Django Academy på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Django Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Django Academy innehåller totalt 4 lektioner.
Två sätt att bygga endpoints
DRF låter dig skriva endpoints som klasser med APIView eller som vanliga funktioner dekorerade med @api_view. Båda talar samma JSON-dialekt.
Klassvarianten
APIView är en underklass till Djangos View, men ger dig DRF:s parsning av requests, innehållsförhandling och smidiga svarshantering utan extra arbete.
from rest_framework.views import APIViewMetoder motsvarar verb
I en APIView skriver du en metod per HTTP-verb: get för läsning, post för att skapa och så vidare. Då hålls varje åtgärd tydligt åtskild.
class BookList(APIView):
def get(self, request):
...
def post(self, request):
...Returnera ett Response
I stället för HttpResponse returnerar du DRF:s Response-objekt, som renderas som JSON eller i det bläddringsbara API:et beroende på begäran.
from rest_framework.response import Response
return Response({'ok': True})Läsa request.data
DRF tolkar request-body åt dig, så du läser skickad JSON från request.data som en vanlig Python-dictionary utan manuell avkodning.
title = request.data['title']Funktionsvarianten
För enkla endpoints omvandlar dekoratorn @api_view en vanlig funktion till en DRF-vy och anger vilka HTTP-metoder den accepterar.
from rest_framework.decorators import api_viewAnge tillåtna metoder
Du skickar verben till dekoratorn. Alla metoder som inte listas får automatiskt 405 Method Not Allowed, så du behöver inte hantera dem själv.
@api_view(['GET', 'POST'])
def books(request):
...Samma Response-objekt
Funktionsbaserade vyer använder samma DRF-Response, så du kan blanda klass- och funktionsvarianter i ett projekt utan problem.
return Response(serializer.data)Vilken variant ska du välja?
Välj @api_view när en endpoint är liten och tillfällig. Välj APIView när du vill ha återanvändbara, organiserade metoder i en klass.
Ange statusen
Båda varianterna låter dig skicka status= till Response så att klienterna får rätt HTTP-kod, till exempel 201 när du skapar något nytt.
Response(data, status=201)Samma kraft, två former
Oavsett om du använder en klass eller funktion får du DRF:s parsning, svar och statushantering. Skillnaden handlar främst om struktur och personlig smak.
Snabb kontroll
Vad gör @api_view med en vanlig funktion?
Sammanfattning: Två vyvarianter
Du kan bygga endpoints med klassbaserade APIView eller funktionsbaserade @api_view, som båda returnerar ett DRF Response. Välj den form som passar. 🧩
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”APIView och funktionsbaserade @api_view” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Django Academy, inklusive ”APIView och funktionsbaserade @api_view”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Django Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”APIView och funktionsbaserade @api_view”?
Bygg endpoints på två sätt Ni övar på Django Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Django Academy?
Du behöver inga förkunskaper. Utbildningen i Django Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”APIView och funktionsbaserade @api_view”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Django Academy-lektionen?
Ja. Varje Django Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Installera och konfigurera DRF
- Serializers: modell till JSON
- APIView och funktionsbaserade @api_view
- Det webbläsarbaserade API:t och statuskoder