๋ฐ์ํ
๐ JSON Server ์ฌ์ฉํ๊ธฐ
1. REST / REST API / Json Server
- REST: ์น์ ๊ธฐ๋ณธ ํ๋กํ ์ฝ์ธ HTTP ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋๋ฉฐ , HTTP ๋ฉ์๋์ URL ์ ์ด์ฉํ์ฌ ์์๊ณผ ํ๊ณ ์ํ๋ ํ๋์ ํํํจ.
- REST API: REST ํ ๋ฐฉ์์ผ๋ก ์ค๊ณ๋ API.
- Json Server: JSON ํ์ผ์ ์ด์ฉํ์ฌ Rest API ์๋ฒ๋ฅผ ๋น ๋ฅด๊ณ ๊ฐ๋จํ๊ฒ ์์ฑ ํ๊ธฐ ์ํ ๋๊ตฌ.
ex) (GET) http://example.com/wedding/1 : 1๋ฒ id ์ฒญ์ฒฉ์ฅ ๊ฐ์ ธ์ค๊ธฐ
2. JSON Server ์ฌ์ฉํ๊ธฐ
https://github.com/typicode/json-server
01. JSON Server ์ค์น
yarn add -D json-server
- ๋ฃจํธ๊ฒฝ๋ก์ db.json ์์ฑ
{
"posts": [
{ "id": "1", "title": "a title", "views": 100 },
{ "id": "2", "title": "another title", "views": 200 },
{ "id": "3", "title": "json-server", "views": 200 }
],
"comments": [
{ "id": "1", "text": "a comment about post 1", "postId": "1" },
{ "id": "2", "text": "another comment about post 1", "postId": "1" }
],
"profile": {
"name": "typicode"
}
}
- package.json์ ์๋ ๋ด์ฉ ์ถ๊ฐ
"dev:db": "json-server --watch db.json --port=8888"
// watch์ต์
์ ์ฃผ๋ฉด db.json์ ๋ณ๊ฒฝ์ฌํญ์ ๊ฐ๋ฐ์๋ฒ์ ์ค์๊ฐ ๋ฐ์ํด์ค๋ค.
- ์คํ
yarn dev:db
02. ๋์ test (https://github.com/typicode/json-server?tab=readme-ov-file)
- Filter
- title์ด json-server์ธ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ ํ
์คํธ
http://localhost:8888/posts?title=json-server
- title์ด json-server์ธ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ ํ
์คํธ
- ์คํ๊ฒฐ๊ณผ
- Paginate
Use _page and optionally _limit to paginate returned data. In the Link header you'll get first, prev, next and last links.
GET /posts?_page=7 โ
- _page=7 : ์ผ๊ณฑ ๋ฒ์งธ ํ์ด์ง๋ฅผ ์์ฒญํ๋ค.
- _limit ํ๋ผ๋ฏธํฐ๊ฐ ๋ช ์๋์ง ์์์ผ๋ฏ๋ก, json-server๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ด์ง๋น 10๊ฐ์ ํญ๋ชฉ์ ๋ฐํํ๋ค.
- ๊ฒฐ๊ณผ : ๊ธฐ๋ณธ ํ์ด์ง๋น 10๊ฐ ํญ๋ชฉ์ ์ฌ์ฉํด 61~70๋ฒ์งธ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋ค.
GET /posts?_page=7&_limit=20
- _page=7: _page=7์ผ๋ก ์ผ๊ณฑ ๋ฒ์งธ ํ์ด์ง๋ฅผ ์์ฒญํ๋ค.
- _limit: _limit=20์ ์ง์ ํ์ฌ ํ์ด์ง๋น 20๊ฐ์ ํญ๋ชฉ์ ๊ฐ์ ธ์จ๋ค.
- ์ผ๊ณฑ ๋ฒ์งธ ํ์ด์ง์์ 20๊ฐ์ ํญ๋ชฉ์ ๋ฐํํ๋ค. ๋ฐ๋ผ์, posts ๋ฐ์ดํฐ ์ค 121๋ฒ์งธ์์ 140๋ฒ์งธ ํญ๋ชฉ๊น์ง๋ฅผ ๋ฐํํ๋ค.
- Sort
_sort=f1,f2
๋ฐ์ดํฐ๋ฅผ ํน์ ํ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ ์ ์๋ค. ์ ๋ ฌํ ๋๋ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ _sort๋ฅผ ์ฌ์ฉํ๊ณ , ์ ๋ ฌ ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ฆ์ฐจ์์ด๋ฉฐ, ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ค์ ํ๋ ค๋ฉด ํ๋ ์์ -๋ฅผ ๋ถ์ธ๋ค.
1. GET /posts?_sort=idGET /posts?_sort=id,-views
- id ํ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
- posts ๋ฐ์ดํฐ๊ฐ id ๊ฐ์ด ์์ ์์๋๋ก ์ ๋ ฌ๋์ด ๋ฐํ ๋๋ค.
- views ํ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํฉ๋๋ค.
- posts ๋ฐ์ดํฐ๊ฐ views ๊ฐ์ด ํฐ ์์๋๋ก ์ ๋ ฌ๋์ด ๋ฐํ ๋๋ค.
- ์ฌ๋ฌ ๊ฐ์ ํ๋๋ฅผ ์ ๋ ฌ ๊ธฐ์ค์ผ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, id ํ๋๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ๋จผ์ ์ ๋ ฌํ ๋ค์, ๋์ผํ id ๊ฐ์ด ์์ ๊ฒฝ์ฐ views ํ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๋ค.
- ์ฐ์ id ๊ฐ์ด ์์ ์์๋๋ก ์ ๋ ฌ๋๋ฉฐ, ๊ฐ์ id ๊ฐ์ ๊ฐ์ง ํญ๋ชฉ๋ค์ views ๊ฐ์ด ํฐ ์์๋๋ก ์ ๋ ฌ๋๋ค.
๋ฐ์ํ
'๐ฉโ๐ป hello, world! > react' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
dangerouslySetInnerHTML (1) | 2024.11.18 |
---|---|
date-fns ๋ผ์ด๋ธ๋ฌ๋ฆฌ (1) | 2024.11.12 |
[error] es lint error - ์ค ๋ฐ๊ฟ ํ์ ์๋ฌ(CRLF/LF) (0) | 2024.11.05 |
[error] es lint error - Unknown options: extensions, resolvePluginsRelativeTo - 'extensions' has been removed. (0) | 2024.11.05 |
[error] Yarn Berry ํ๋ก์ ํธ ํ๊ฒฝ ์ค์ ์ค .yarn/cache ์์ฑ๋์ง ์๋ ๋ฌธ์ (0) | 2024.11.05 |