๐ฆ ์ค์ ๋ฐฐ๋น๊ธ ํ๋ก์ ํธ
ํฌ๋กค๋ง์ ํตํด ์ฃผ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ๋ฐฐ๋น๊ธ์ ์์๋ณด๋ ํ๋ก์ ํธ์
๋๋ค.
๐ ๏ธ Development Environment
- ๐ฅ๏ธ Intellij IDEA Ultimate
- โ Java 17
- โ Jdk 17
- ๐ง Gradle 8.8
- ๐ฑ Spring Boot 3.3.2
- Frameworks & Libraries: Spring Boot, Spring Security, Spring Data JPA
- Databases: H2, Redis
- Web Scraping: Jsoup
- Authentication: JWT
- Utilities: Lombok, Sl4J, Logback, Swagger
Swagger |
|
ํ์๊ฐ์
API
- POST /signup
- ์ค๋ณต ID๋ ํ์ฉํ์ง ์์
- ํจ์ค์๋๋ ์ํธํ๋ ํํ๋ก ์ ์ฅ๋จ
๋ก๊ทธ์ธ API
- POST /signin
- ๋ก๊ทธ์ธ API
- ํ์๊ฐ์
์ด ๋์ด์๊ณ , ์์ด๋/ํจ์ค์๋๊ฐ ์ผ์นํ๋ ๊ฒฝ์ฐ JWT ๋ฐ๊ธ
ํ์ฌ๋ช
๊ฒ์ API
- GET /autocomplete
- ๊ฒ์ํ๊ณ ์ ํ๋ prefix๋ฅผ ์
๋ ฅ๊ฐ์ผ๋ก ๋ฐ๊ณ , ํด๋น prefix๋ก ๊ฒ์๋๋ ํ์ฌ๋ช
๋ฆฌ์คํธ ์ค 10๊ฐ ๋ฐํ
keyword
ํ๋ผ๋ฏธํฐ๋ก ๋ฐฐ๋น๊ธ ์ด๋ฆ์ ๊ฒ์ํ๋ฉด {result:["O","OAS",...]}
์ ๊ฐ์ด ํด๋น ๊ธ์ด ๋ค์ด๊ฐ ๋ฐฐ๋น๊ธ ํค์๋๋ฅผ ๋ฐํ
ํ์ฌ ๋ชฉ๋ก ํ์ธ API
- GET
- ์๋น์ค์์ ๊ด๋ฆฌํ๊ณ ์๋ ๋ชจ๋ ํ์ฌ ๋ชฉ๋ก์ ๋ฐํ
- ๋ฐํ ๊ฒฐ๊ณผ๋ Page ์ธํฐํ์ด์ค ํํ
{result : [{companyName: "์ข์ํ์ฌ", ticker : "GOOD"}, {companyName:"a", ticker:"b"}, ...]}
ํ์ฌ ์ ๋ณด ์ถ๊ฐ API
- POST
- ์ถ๊ฐํ๊ณ ์ ํ๋ ํ์ฌ์
ticker
๋ฅผ ์
๋ ฅ๋ฐ์ ํด๋น ํ์ฌ ์ ๋ณด๋ฅผ ์คํฌ๋ํ, ์ ์ฅ
- ์ด๋ฏธ ๋ณด์ ํ๊ณ ์๋ ํ์ฌ์ ๊ฒฝ์ฐ 400 status ์ฝ๋์ ์๋ฌ๋ฉ์ธ์ง ๋ฐํ
- ์กด์ฌํ์ง ์๋ ํ์ฌ
ticker
์ผ ๊ฒฝ์ฐ 400 status ์ฝ๋์ ์๋ฌ๋ฉ์ธ์ง ๋ฐํ
{ticker : "GOOD"}
ticker ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์์ฃผ์ธ์
- DB์
{ticker : "GOOD", companyName : "์ข์ํ์ฌ"}
์ด๋ ๊ฒ ์ ์ฅํฉ๋๋ค
ํ์ฌ ์ ๋ณด ์ญ์ API
- DELETE /{ticker}
ticker
์ ํด๋นํ๋ ํ์ฌ ์ ๋ณด ์ญ์
- ์ญ์ ์ ํ์ฌ์ ๋ฐฐ๋น๊ธ ์ ๋ณด์ ์บ์๋ ๋ชจ๋ ์ญ์
๋ฐฐ๋น๊ธ ์ ๋ณด ํ์ธ API
- GET /dividend/{companyName}
- ํ์ฌ๋ช
์ ๋ฐ์ ํ์ฌ ๋ฉํ ์ ๋ณด์ ๋ฐฐ๋น๊ธ ์ ๋ณด๋ฅผ ๋ฐํ
- ์๋ชป๋ ํ์ฌ๋ช
์ด ์
๋ ฅ์ผ๋ก ๋ค์ด์จ ๊ฒฝ์ฐ 400 status ์ฝ๋์ ์๋ฌ๋ฉ์ธ์ง ๋ฐํ
{companyName : "์ข์ํ์ฌ", dividend :[{date:"2023.10.29", price:"2.00", ...}]}
๐ฎPostMan API ํ
์คํธ
ํ์๊ฐ์
|
๋ก๊ทธ์ธ |
|
|
ํ์ฌ ์กฐํ |
ํ์ฌ ์ ์ฅ |
|
|
ํ์ฌ ์๋์์ฑ |
๋ฐฐ๋น๊ธ ์กฐํ |
|
|
Redis ํ์ฌ ์บ์ ์ ์ฅ |
Redis ํ์ฌ ์บ์ ์ญ์ |
|
|
ํ์ ์ ๋ณด |
ํ์ ์ญํ |
|
|
ํ์ฌ ์กฐํ |
๋ฐฐ๋น๊ธ ์กฐํ |
|
|