API는 Application Programming Interface의 줄임말입니다
하지만 너무 복잡하게 생각 하지 마세요~
그냥 이렇게 생각하면 됍니다:
프론트(화면)가 백엔드(서버)에게
"이거 해줘요!" 하고 요청할수 있도록
정해진 방식으로 말하는방법
로그인 버튼을 눌렀다고 해볼게요~
POST /login 이 바로 API의 형태입니다.| 메서드 | 설명 | 예시 |
|---|---|---|
| GET | 정보 조회 | GET /users |
| POST | 정보 생성 | POST /signup |
| PUT | 정보 전체 수정 | PUT /user/3 |
| PATCH | 정보 일부 수정 | PATCH /user/3 |
| DELETE | 정보 삭제 | DELETE /user/3 |
가장 많이 쓰는 API 설계 방식중 하나 입니다.
REST는 이렇게 약속해요:
/users , /posts)GET , POST , DELETE)예시
GET /users -> 사용자 목록 가져오기
DELETE /post/1 -> 1번 게시글 삭제하기
# views.py
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
import json
@csrf_exempt
def login_view(request):
if request.method == "POST":
data = json.loads(request.body)
username = data.get("username")
password = data.get("password")
# 로그인 처리 로직
return JsonResponse({"message": "로그인 성공"})
return JsonResponse({"error": "잘못된 요청입니다"}, status=400)
# urls.py
from django.urls import path
from .views import login_view
urlpatterns = [
path("login/", login_view),
]
이처럼 Django는
views.py에서 요청 처리하고
urls.py에서 URL을 등록합니다.
JsonResponse는 프론트와 데이터를 주고받을때 사용하는 JSON 응답 객체입니다.
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route("/login", methods=["POST"])
def login():
data = request.json
username = data.get("username")
return jsonify({"message": "로그인 성공"})
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class LoginData(BaseModel):
username: str
password: str
@app.post("/login")
def login(data: LoginData):
return {"message": "로그인 성공"}
프론트 = 손님
백엔드 = 주방
API = 메뉴판
-> API는 프론트가 백엔드에게 요철할 수 있도록 도와주는 메뉴판 같은 역활
-> 메뉴가 있어야 주문할수 있고 주문이 있어야 요리가 나와요!
JSON?
프론트와 백엔드가 데이터를 주고받을때 쓰는 공통언어