๐ค๐ป ๋์์ธ ๊ท์น
URI์ ๋์์ธํ ๋ ์์ฃผ ์ธ๊ธ ๋๋ 7๊ฐ์ง ๊ท์น์ ์ ๋ฆฌํ์๋ค.
1. URI ๋ง์ง๋ง์ ์ฌ๋์(/)๋ฅผ ํฌํจํ์ง ์๋๋ค.
URI ๊ฒฝ๋ก ๋ง์ง๋ง์ ๋ฐ๋์ ๋ฌธ์์ฌ์ผ ํ๋ค. ์ฌ๋์(/) ๋ค์์ ์๋ฏธ ์๋ ๊ฐ์ ์ถ๊ฐํ์ง ์์ผ๋ฉด ํผ๋์ด ์ฌ ์ ์๋ค.
X : http://api.canvas.com/shapes/
O : http://api.canvas.com/shapes
2. ์ฌ๋์(/)๋ฅผ ์ฌ์ฉํ์ฌ ๊ณ์ธต์ ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค.
์ฌ๋์ ๋ฌธ์๋ ๋ฆฌ์์ค ๊ฐ์ ๊ณ์ธต์ ๊ด๊ณ๋ฅผ ๋ํ๋ด๊ธฐ ์ํด URI ๊ฒฝ๋ก์ ์ฌ์ฉ๋๋ค.
ex) http://api.canvas.com/shapes/polygons/quadrilaterals/squares
3. URI ๊ฐ๋ ์ฑ์ ๋์ด๋ ค๋ฉด ํ์ดํ(-)์ ์ฌ์ฉํด์ผ ํ๋ค.
URI๋ฅผ ์ฌ๋๋ค์ด ์ฝ๊ฒ ์ค์บํ๊ณ ํด์ํ ์ ์๋๋ก ํ์ดํ(-) ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ ์ฑ์ ๋์ธ๋ค. ์์ด๋ก ๊ณต๋ฐฑ์ด๋ ํ์ดํ์ ์ฌ์ฉํ๋ฉด URI์์๋ ๋ชจ๋ ํ์ดํ์ ์ฌ์ฉํด์ผ ํ๋ค.
spinal-case ์ฌ์ฉํ๋ค.
ex) http://api.example.com/rest/api/this-is-uri-design
4. ๋ฐ์ค(_)์ URI์ ์ฌ์ฉํด์ ์๋๋ค.
URI์ ํ์ดํผ๋งํฌ๊ฐ ๊ฑธ๋ ค์์ ๊ฒฝ์ฐ ์ข ์ข URI์ ๋ฐ์ค์ ์ณ์ ํด๋ฆญํ ์ ์๊ฒ ์๊ฐํํ๋ค. ๊ธ๊ผด์ ๋ฐ์ค(_)๋ฌธ์๊ฐ ๋ฐ์ค๋ก ์ธํด ๋ถ๋ถ์ ์ผ๋ก ๊ฐ๋ ค์ง๊ฑฐ๋ ์์ ํ ์จ๊ฒจ์ง ์ ์๋ค.
์ด๋ฌํ ํผ๋์ ๋ฐฉ์งํ๊ธฐ ์ํด์ ๋ฐ์ค๋์ ํ์ดํ(-)์ ์ฌ์ฉํ๋ค.
5. URI๋ ์๋ฌธ์๋ก ์์ฑํ๊ณ , ๋ช ์ฌ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
๋ฆฌ์์ค๋ฅผ ์ค๋ช ํ ๋ ๋์ฌ๊ฐ ์๋ ๊ตฌ์ฒด์ ์ธ ๋ช ์ฌ ์ฌ์ฉํ๋ค.
6. ํ์ผ ํ์ฅ์๋ URI์ ํฌํจํ์ง ์๋๋ค.
๋ง์นจํ(.) ๋ฌธ์๋ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฆ๊ณผ ํ์ฅ์ ๋ถ๋ถ์ ๊ตฌ๋ถํ๋๋ฐ ์ฌ์ฉ๋๋ค. REST API๋ ๋ฉ์ธ์ง์ entity body ํ์์ ๋ํ๋ด๊ธฐ ์ํด URI๋ ํ์ผ ํ์ฅ์๋ฅผ ํฌํจํด์๋ ์ ๋๋ค.
ex)
X : http://restapi.example.com/members/soccer/345/photo.jpg
O : http://restapi.example.com/members/soccer/345/photo
๋์ ํค๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ณธ๋ฌธ์ ์ปจํ ์ธ ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ค.
GET /members/soccer/345/photo HTTP/1.1
Host: restapi.example.com
Accept: image/jpg
Accept๋ก ์ํ๋ ํ์์ ๋ณด๋ด๋ฉด, ์๋ฒ๊ฐ ๊ทธ์ ๋ง์ถฐ ๋ณด๋ด์ค๋ค.
7. ๋ณต์ํ์ ์ฌ์ฉํ๋ค.
์ฐธ๊ณ
REST API URI ์ค๊ณ๋ฅผ ์ํ 7๊ฐ์ง ๊ท์นhttps://blog.restcase.com/7-rules-for-rest-api-uri-design
'BACK-END > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring Batch ๊ธฐ๋ณธ ๊ตฌ์กฐ (0) | 2023.04.10 |
---|---|
Spring Batch ์์ํ๊ธฐ (0) | 2023.02.19 |
[Spring Batch] Scheduled cron Expression ํฌ๋ก ํํ์ (3) | 2022.03.16 |
[Spring Boot] Failed to determine a suitable driver class ์๋ฌ (0) | 2021.12.14 |