- ํ๋ก์ ํธ ๊ฐ์
- ํ๋ก์ ํธ ๊ธฐ๊ฐ
- ํ์ ์๊ฐ
- ๊ธฐ์ ์คํ
- ๊ธฐ์ ์ํคํ ์ฒ
- ํ๋ก์ ํธ ์ธ๋ถ ์ฌํญ
- ์ค์น ๋ฐ ์คํ ๋ฐฉ๋ฒ
- DB ์ค๊ณ
- API ๋ฌธ์
- ๊ธฐ์ ์ค๋ช
"์ฐ์ฐจ/๋น์ง ์ ๊ด๋ฆฌํ๋๋ฐ ์ข ๋ ํจ์จ์ ์ด๊ณ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ๊ฒ๋ ๋ง๋ค์ด์ก๋ค."
| ๋ฐ์ฑํ(BE-ํ์ฅ) | ์์ฉํ |
|---|---|
|
|
-

-

- ํ๋ก ํธ์๋ ํ๋ก์ ํธ ๋งํฌ : https://github.com/FastCampusGroupFE9/MiniProject_KDT9
ํ๋ก์ ํธ ๋งํฌ : https://hmteresting.netlify.app/
๊ด๋ฆฌ์ ๊ณ์ : [email protected] / fastcampus12#$
create table member
(
id bigint primary key auto_increment,
email varchar(100) unique not null,
password varchar(100) not null,
name varchar(100) not null,
joined_at date not null,
role varchar(10) not null,
annual_amount_id bigint not null,
annual_used int,
annual_remain int,
position varchar(5) not null,
loggedin_at timestamp,
created_at timestamp not null,
modified_at timestamp,
foreign key (annual_amount_id) references annual (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;create table reg
(
id bigint primary key auto_increment,
category varchar(10) not null,
title varchar(40) not null,
started_at date not null,
lasted_at date not null,
reason varchar(20),
status varchar(10) not null,
member_id bigint,
created_at timestamp not null,
modified_at timestamp,
foreign key (member_id) references member (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;create table annual
(
id bigint primary key auto_increment,
years int not null,
annual_amount int not null,
position varchar(5) not null,
hist_year varchar(4) not null,
unique (years, position, hist_year)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;create table login_log
(
id bigint primary key auto_increment,
user_agent varchar(200) not null,
client_ip varchar(15) not null,
member_id bigint not null,
success_login_date timestamp,
foreign key (member_id) references member (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;create table refresh_token
(
id bigint not null auto_increment,
email varchar(255) not null,
refresh_token varchar(255) not null,
primary key (id)
) engine=InnoDB DEFAULT CHARSET=utf8mb4;| ์๋ํฌ์ธํธ | ๋ฉ์๋ | ์์ฒญ ๋ณธ๋ฌธ (Request Body) | ์์ฒญ ํค๋ (Request Headers) | ์๋ต ๋ณธ๋ฌธ (Response Body) |
|---|---|---|---|---|
/api/register |
POST | {email: [email protected], password: 1234567, name: โ์๋ฌด๊ฐโ, join: YYYY-MM-DD } |
- | ์ํ๊ฐ 200 ok,json body ์ โํ์๊ฐ์
์ ์ฑ๊ณตํ์์ต๋๋คโ. ๋ฉ์์ง |
/api/login |
POST | - | { email: ์ด๋ฉ์ผpassword: ํจ์ค์๋} |
์ํ๊ฐ 200 ok, accessToken ์ json body, refreshToken ์ cookie ๊ฐ์ ์ ์ฅ |
/api/token |
POST | {"startDate": "2023-08-15", "endDate": "2023-08-20"} |
Authorization: Bearer your_access_token, Cookie: refreshToken |
์ํ๊ฐ 200 ok, accessToken ์ json body, refreshToken ์ cookie ๊ฐ์ ์ ์ฅ |
/api/logout |
POST | - | Authorization: Bearer your_access_token, Cookie: refreshToken |
์ํ๊ฐ 200 ok, ๋ฉ์์ง |
/api/main |
GET | ` | Authorization: Bearer your_access_token, Cookie: refreshToken |
![]() |
/api/annual |
POST | {โtitleโ : โ์ฐ์ฐจ ์ ์ฒญํฉ๋๋น~~โ, โcategoryโ : โ์ฐ์ฐจโ, โstartDateโ : โ2023-08-02โ, โendDateโ : โ2023-08-07โ, โreasonโ : โ๋ณ๊ฐโ } |
Authorization: Bearer your_access_token, Cookie: refreshToken |
์ํ๊ฐ 200 ok, ๋ฉ์์ง |
/api/user |
GET | - | Authorization: Bearer your_access_token, Cookie: refreshToken |
![]() |
/api/user |
POST | {โnewPasswordโ : โ์๋ก์ด ๋น๋ฐ๋ฒํธโ } |
Authorization: Bearer your_access_token, Cookie: refreshToken |
์ํ๊ฐ 200 ok, ๋ฉ์์ง |
/api/annual/cancel |
POST | {โidโ : annul ๋ฒํธ} | Authorization: Bearer your_access_token, Cookie: refreshToken |
์ํ๊ฐ 200. ๋ฉ์์ง |
/api/annual/update |
POST | {โidโ : 1, โtitleโ : โ์ฐ์ฐจ ์์ ํฉ๋๋ค~~โ, โstartDateโ : โ2023-08-01โ, โendDateโ : โ2023-08-04โ,โreasonโ : โ๋ณ๊ฐโ} | Authorization: Bearer your_access_token, `Cookie: refreshToken |
์ํ๊ฐ 200 ok ๋ฉ์์ง |
/api/admin |
GET | - | Authorization: Bearer your_access_token, Cookie: refreshToken |
![]() |
/api/admin/apply |
POST | { โidโ : 1 } | Authorization: Bearer your_access_token, Cookie: refreshToken |
์ํ๊ฐ 200 ok, ๋ฉ์์ง |
ํ๋ก์ ํธ๋ Java ์ธ์ด์ Spring Boot ํ๋ ์์ํฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ๋์์ต๋๋ค. Spring Boot๋ ๊ฐ๊ฒฐํ๊ณ ํจ์จ์ ์ธ ์ฝ๋ ์์ฑ์ ์ง์ํ๋ฉฐ, ํ๋ก์ ํธ์ ํต์ฌ ๋ก์ง์ ๊ตฌํํ๋๋ฐ ํ์ฉ๋์์ต๋๋ค.
ํ๋ก์ ํธ๋ Amazon EC2 ์ธ์คํด์ค๋ฅผ ํ์ฉํ์ฌ ํ ์คํธ ์๋ฒ์ ์ด์ ์๋ฒ๋ฅผ ๊ตฌ์ฑํ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ Amazon RDS๋ฅผ ์ด์ฉํ์ฌ ๊ด๋ฆฌ๋๋ฉฐ, ์์ ์ ์ธ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
Redis๋ฅผ ์ฌ์ฉํ์ฌ RefreshToken ์ ๊ตฌํํ์๋ค. ํ ํฐ์ ๋ง๋ฃ๊ธฐ๊ฐ์ Redsi ์ ์ ํจ๊ธฐ๊ฐ์ผ๋ก ์ค์ ํ์ฌ ํ ํฐ์ ์ข ๋ ์์ ํ๊ฒ ๊ด๋ฆฌํ๊ณ ์ญ์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค.
Spring Security๋ฅผ ํตํด ๊ฐ๋ ฅํ ๋ณด์ ๊ธฐ๋ฅ์ ๊ตฌํํ์์ผ๋ฉฐ, JWT(JSON Web Token) ๊ธฐ๋ฐ์ ์ธ์ฆ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ์์ ํ ์ฌ์ฉ์ ์ธ์ฆ์ ๋ณด์ฅํฉ๋๋ค.
ํ๋ก์ ํธ์ ์์ค ์ฝ๋๋ GitHub Actions๋ฅผ ํ์ฉํ์ฌ ์๋์ผ๋ก ํ ์คํธ ๋ฐ ๋ฐฐํฌ๋๋ฉฐ, ๊ฐ๋ฐ์๋ค์ ์์ ํ๋ฆ์ ์๋ํํ๊ณ ํจ์จ์ฑ์ ๋์์ต๋๋ค.




