Search

ํŒŒ์ผ ์—…๋กœ๋“œ - FrontEnd (React)

React (Front-End)

React ๋กœ ํŒŒ์ผ ์—…๋กœ๋“œ, ์กฐํšŒ, ์‚ญ์ œ UI ๋ฐ API ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
ํŒŒ์ผ ์—…๋กœ๋“œ
โ—ฆ
ํŒŒ์ผ ๋“ฑ๋ก UI ์ถ”๊ฐ€
โ—ฆ
ํŒŒ์ผ ์—…๋กœ๋“œ ์š”์ฒญ API
โ€ข
๏ธŽ ํŒŒ์ผ ์กฐํšŒ
โ—ฆ
ํŒŒ์ผ ๋ชฉ๋ก ์กฐํšŒ UI ๋ฐ API ์ถ”๊ฐ€
โ—ฆ
๋‹ค์šด๋กœ๋“œ UI ๋ฐ API ์ถ”๊ฐ€
โ—ฆ
์ธ๋„ค์ผ ์ด๋ฏธ์ง€ UI ์ถ”๊ฐ€
โ€ข
ํŒŒ์ผ ์‚ญ์ œ
โ—ฆ
๊ฐœ๋ณ„ ์‚ญ์ œ
โ—ฆ
์„ ํƒ ์‚ญ์ œ
โ€ข
ํŒŒ์ผ ์ˆ˜์ • ์‹œ ์—…๋กœ๋“œ
โ—ฆ
ํŒŒ์ผ ๋“ฑ๋ก UI ์ถ”๊ฐ€
โ—ฆ
ํŒŒ์ผ ์—…๋กœ๋“œ ์š”์ฒญ API

ํŒŒ์ผ ์—…๋กœ๋“œ

โ€ข
ํŒŒ์ผ ๋“ฑ๋ก UI ์ถ”๊ฐ€
โ€ข
ํŒŒ์ผ ์—…๋กœ๋“œ ์š”์ฒญ API

ํŒŒ์ผ ๋“ฑ๋ก UI ์ถ”๊ฐ€

โ€ข
<input type=โ€fileโ€ /> ์š”์†Œ ์ถ”๊ฐ€
โ€ข
ํŒŒ์ผ ๋ณ€๊ฒฝ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์—ฐ๊ฒฐ

ํŒŒ์ผ ์—…๋กœ๋“œ ์š”์ฒญ API

โ€ข
Content-Type ๋ณ€๊ฒฝ : application/json multipart/form-data
โ€ข
FormData ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
โ—ฆ
๊ฒŒ์‹œ๊ธ€ ์ •๋ณด ์„ธํŒ…
โ—ฆ
ํŒŒ์ผ ๋ฐ์ดํ„ฐ ์„ธํŒ…
โ€ข
API ์š”์ฒญ ์‹œ, JSON ๋Œ€์‹  FormData ๋กœ ์ง€์ •

๏ธŽ ํŒŒ์ผ ์กฐํšŒ

โ€ข
ํŒŒ์ผ ๋ชฉ๋ก ์กฐํšŒ UI ๋ฐ API ์ถ”๊ฐ€
โ€ข
๋‹ค์šด๋กœ๋“œ UI ๋ฐ API ์ถ”๊ฐ€
โ€ข
์ธ๋„ค์ผ ์ด๋ฏธ์ง€ UI ์ถ”๊ฐ€

ํŒŒ์ผ ๋ชฉ๋ก ์กฐํšŒ UI ๋ฐ API ์ถ”๊ฐ€

โ€ข
๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ&์ˆ˜์ • ํ™”๋ฉด
โ—ฆ
ํŒŒ์ผ ๋ชฉ๋ก UI ์ž‘์„ฑ
โ—ฆ
๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ตฌ์กฐ ๋ณ€๊ฒฝ
โ–ช
URL : /boards/{id}
โ–ช
data
โ€ข
โ€œboardโ€ : { }
โ€ข
โ€œfileListโ€ : [ {}, {}, {} ]
โ—ฆ
๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ ์ปจํ…Œ์ด๋„ˆ์—์„œ state & props ์„ธํŒ…
โ–ช
fileList state ๋“ฑ๋ก
โ–ช
props ์กฐํšŒํ™”๋ฉด ์ปดํฌ๋„ŒํŠธ๋กœ ์ „๋‹ฌ

๋‹ค์šด๋กœ๋“œ UI ๋ฐ API ์ถ”๊ฐ€

โ€ข
ํŒŒ์ผ ๋ชฉ๋ก
โ—ฆ
๋‹ค์šด๋กœ๋“œ ๋ฒ„ํŠผ UI ์ž‘์„ฑ
โ€ข
๋‹ค์šด๋กœ๋“œ ํด๋ฆญ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์ •์˜
โ€ข
/files/download/{id} ์š”์ฒญ API ์—ฐ๊ฒฐ
โ—ฆ
์‘๋‹ต๋ฐ›์€ ํŒŒ์ผ ๋ฐ”์ดํŠธ ์ฝ”๋“œ ์ฒ˜๋ฆฌ
โ—ฆ
Blob ๊ฐ์ฒด ์ƒ์„ฑ
โ—ฆ
Javascript ์—์„œ ๋ธŒ๋ผ์šฐ์ €๋กœ ๋‹ค์šด๋กœ๋“œ ๋˜๋„๋ก ์ฒ˜๋ฆฌ
โ–ช
<a href=โ€URLโ€ download=โ€ํŒŒ์ผ๋ช…โ€ /> ๋‹ค์šด๋กœ๋“œ ๋งํฌ ์ƒ์„ฑ
โ–ช
ํด๋ฆญ ํŠธ๋ฆฌ๊ฑฐ ์‹คํ–‰

์ธ๋„ค์ผ ์ด๋ฏธ์ง€ UI ์ถ”๊ฐ€

โ€ข
ํŒŒ์ผ ๋ชฉ๋ก
โ—ฆ
์ด๋ฏธ์ง€ UI ์ถ”๊ฐ€
โ–ช
/files/img/{id}
โ–ช
<img src=โ€/files/img/{id}โ€ />
โ€ข
MAIN (๋Œ€ํ‘œ์ด๋ฏธ์ง€), SUB(์ฒจ๋ถ€์ด๋ฏธ์ง€) ๊ตฌ๋ณ„ํ•˜์—ฌ ์š”์ฒญ - (type ๋ณ„ ํŒŒ์ผ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ํ•„์š”)
โ—ฆ
๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก
โ–ช
์ธ๋„ค์ผ ์ด๋ฏธ์ง€๋กœ ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ ์ถœ๋ ฅ
โ—ฆ
๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ
โ–ช
์ธ๋„ค์ผ ๊ตฌ๋ณ„ํ•˜์—ฌ ์ถœ๋ ฅ
โ€ข
๋ฉ”์ธ ์ด๋ฏธ์ง€
โ€ข
์ฒจ๋ถ€ ์ด๋ฏธ์ง€

ํŒŒ์ผ ์‚ญ์ œ

โ€ข
๊ฐœ๋ณ„ ์‚ญ์ œ
โ€ข
์„ ํƒ ์‚ญ์ œ

๊ฐœ๋ณ„ ์‚ญ์ œ

โ€ข
์ˆ˜์ • ํ™”๋ฉด
โ—ฆ
ํŒŒ์ผ ๋ชฉ๋ก UI ์ถ”๊ฐ€
โ—ฆ
ํŒŒ์ผ ๋ชฉ๋ก ๊ฐ ํ•ญ๋ชฉ์— ์‚ญ์ œ ๋ฒ„ํŠผ ๋˜๋Š” ์•„์ด์ฝ˜() ์ถ”๊ฐ€
โ—ฆ
์‚ญ์ œ ํด๋ฆญ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์—ฐ๊ฒฐ
โ—ฆ
์‚ญ์ œ ์š”์ฒญ API ์—ฐ๊ฒฐ

์„ ํƒ ์‚ญ์ œ

โ€ข
์ˆ˜์ • ํ™”๋ฉด
โ—ฆ
ํŒŒ์ผ ๋ชฉ๋ก ๊ฐ ํ•ญ๋ชฉ ์ฒดํฌ๋ฐ•์Šค UI ์ถ”๊ฐ€
โ—ฆ
์„ ํƒ ์‚ญ์ œ ๋ฒ„ํŠผ UI ์ถ”๊ฐ€
โ—ฆ
์ฒดํฌ ๋ฐ•์Šค ํด๋ฆญ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์—ฐ๊ฒฐ
โ–ช
ํ•ด๋‹น ํŒŒ์ผ์˜ id ๋ฅผ ์‚ญ์ œ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€
โ—ฆ
์„ ํƒ ์‚ญ์ œ ์š”์ฒญ API ๋ฉ”์†Œ๋“œ ์ •์˜
โ–ช
[DELETE] /files
โ€ข
param
โ—ฆ
noList : 1,2,3
โ—ฆ
idList : id1, id2, id3
โ—ฆ
์„ ํƒ ์‚ญ์ œ ๋ฒ„ํŠผ ํด๋ฆญ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์—ฐ๊ฒฐ
โ–ช
์„ ํƒ ์‚ญ์ œ ํด๋ฆญ ์‹œ
โ€ข
์„ ํƒ ์‚ญ์ œ API ์š”์ฒญ ์—ฐ๊ฒฐ

ํŒŒ์ผ ์ˆ˜์ • ์‹œ ์—…๋กœ๋“œ

โ€ข
ํŒŒ์ผ ๋“ฑ๋ก UI ์ถ”๊ฐ€
โ€ข
ํŒŒ์ผ ์—…๋กœ๋“œ ์š”์ฒญ API

ํŒŒ์ผ ๋“ฑ๋ก UI ์ถ”๊ฐ€

โ€ข
<input type=โ€fileโ€ /> ์š”์†Œ ์ถ”๊ฐ€
โ€ข
ํŒŒ์ผ ๋ณ€๊ฒฝ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์—ฐ๊ฒฐ

ํŒŒ์ผ ์—…๋กœ๋“œ ์š”์ฒญ API

โ€ข
Content-Type ๋ณ€๊ฒฝ : application/json multipart/form-data
โ€ข
FormData ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
โ—ฆ
๊ฒŒ์‹œ๊ธ€ ์ •๋ณด ์„ธํŒ…
โ—ฆ
ํŒŒ์ผ ๋ฐ์ดํ„ฐ ์„ธํŒ…
โ€ข
API ์š”์ฒญ ์‹œ, JSON ๋Œ€์‹  FormData ๋กœ ์ง€์ •