콘텐츠로 이동

API 서버 (선택)

팀마다 배포 칸이 두 개입니다.

주소 언제
메인 teamNN.hack26.act.club 항상
API 서버 teamNN-api.hack26.act.club 백엔드를 분리할 때만

프론트만 있으면 메인 하나로 충분합니다. 안 쓰는 팀은 그냥 두면 됩니다 — 비워둬도 아무 문제 없습니다.

  • 두 앱은 완전히 분리된 서버입니다. 파일도 메모리도 공유하지 않습니다.
  • 각각 따로 zip 을 올립니다. 업로드 간격(2분)도 칸마다 따로 셉니다.
  • 데이터베이스는 두 앱이 같은 것을 공유합니다.

도메인이 다르므로 브라우저가 기본적으로 요청을 막습니다. API 쪽에서 메인 도메인을 허용해야 합니다.

Express
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', 'https://teamNN.hack26.act.club');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
if (req.method === 'OPTIONS') return res.sendStatus(204);
next();
});
FastAPI
from fastapi.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
allow_origins=["https://teamNN.hack26.act.club"],
allow_methods=["*"],
allow_headers=["*"],
)
const API = 'https://teamNN-api.hack26.act.club';
const res = await fetch(`${API}/items`);

주소를 코드에 직접 박기보다 환경변수로 빼두면 로컬 개발과 배포를 같이 쓰기 편합니다.