๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ199

[Spring Boot/RESTful] Swagger ์„ค์ •(+๋ฒ„์ „ ์˜ค๋ฅ˜) Swagger API ์„ค๊ณ„, ๋นŒ๋“œ, ๋ฌธ์„œํ™”, ์‚ฌ์šฉ์— ๋„์›€์„ ์ฃผ๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ Swagger ๊ตฌํ˜„ 1. dependency ์„ค์ • io.springfox springfox-boot-starter 3.0.0 io.springfox springfox-swagger-ui 3.0.0 ๋ฒ„์ „ ์˜ค๋ฅ˜ spring boot 2.6 ๋ฒ„์ „ ์ดํ›„์— spring.mvc.pathmatch.matching-strategy ๊ฐ’์ด ant_path_matcher์—์„œ path_pattern_parser๋กœ ๋ณ€๊ฒฝ๋˜๋ฉด์„œ ๋ช‡๋ช‡ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(swaggerํฌํ•จ)์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPo.. 2022. 2. 18.
[Spring Boot/RESTful] REST API 3๋‹จ๊ณ„๋ฅผ ์œ„ํ•œ HATEOAS ์„ค์ • HATEOAS Hypermedia As the Engine Of Application State ํ˜„์žฌ ๋ฆฌ์†Œ์Šค์™€ ์—ฐ๊ด€๋œ(ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•œ) ์ž์› ์ƒํƒœ ์ •๋ณด๋ฅผ ์ œ๊ณต(mapping) ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ๋งํฌ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ์„œ๋ฒ„ ์ธก์—์„œ ๋ฐ›์€ ๋งํฌ์˜ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ํ†ตํ•ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ ๋ฐ ์ „์ด๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์žฅ์  - ์š”์ฒญ URI๊ฐ€ ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ URI๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ URI ์ˆ˜์ •์— ๋”ฐ๋ฅธ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ํŽธ๋ฆฌํ•จ์„ ์ œ๊ณตํ•œ๋‹ค. - URI ์ •๋ณด๋ฅผ ํ†ตํ•ด ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์„ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. - Resource๊ฐ€ ํฌํ•จ๋œ URI๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, Resource์— ๋Œ€ํ•œ ํ™•์‹ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. REST API ์„ค๊ณ„ ๋‹จ๊ณ„ 0. The Swamp of POX ํŠน์ •ํ•œ .. 2022. 2. 18.
[Spring boot/RESTful] REST API ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ฒ„์ „ ๊ด€๋ฆฌ ๋‹จ์ˆœํ•˜๊ฒŒ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ํ•ญ๋ชฉ์„ ์ œ์–ดํ•˜๋Š” ์šฉ๋„๊ฐ€ ์•„๋‹ˆ๋ผ REST API์˜ ์„ค๊ณ„๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋€” ๋•Œ๋„ ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ์–ด๋– ํ•œ API ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ช…์‹œํ•ด์•ผ ํ•œ๋‹ค. ์ข…๋ฅ˜ 1) URI Versioning : Twitter 2) Request Parameter Versioning : Amazon 3) (Custom) Headers Versioning(MIME) : Microsoft 4) Media type Versioning(content negotiation, accept header) : Github ์ผ๋ฐ˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅ : URI, Request Parameter ์ผ๋ฐ˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰ ๋ถˆ๊ฐ€ : (Custom) Headers Ve.. 2022. 2. 18.
[Spring boot/RESTful] Response Filtering Response ๋ฐ์ดํ„ฐ ์ œ์–ด๋ฅผ ์œ„ํ•œ Filtering ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ๋˜๋Š” ์ •๋ณด์˜ ๊ฐ’์„ ์ œ์–ด ๋ณดํ†ต 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ์˜ค๋Š˜์€ ์ด ์ค‘ 3๋ฒˆ์งธ์— ๋Œ€ํ•ด ๋‹ค๋ฃฌ๋‹ค. ๊ฐ’์„ ์•”ํ˜ธํ™”ํ•˜๊ฑฐ๋‚˜ ์น˜ํ™˜ํ•˜์—ฌ ์ „๋‹ฌ null๋กœ ๋ฐ˜ํ™˜ ์•„์˜ˆ ์ œ์™ธํ•˜๊ณ  ๋ฐ˜ํ™˜ @JsonIgnore Response ๋ฐ˜ํ™˜ ์‹œ Json๊ฐ’์— ํฌํ•จ๋˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” annotation. ๊ฐœ๋ณ„์ ์œผ๋กœ ํ•„๋“œ ๊ฐ’์„ ์ œ์–ดํ•œ๋‹ค. @JsonIgnore // ๋ฐ˜ํ™˜ ์‹œ Json๊ฐ’์— ํฌํ•จ๋˜์ง€ ์•Š์Œ ->๋ฐ˜ํ™˜๊ฐ’ ์ œ์–ด privateString password; @JsonIgnore privateString ssn; @JsonIgnoreProperties ํ•ด๋‹น ํด๋ž˜์Šค ๋ธ”๋ก ๋‹จ์œ„๋กœ ํ•„ํ„ฐ๋ง @JsonIgnoreProperties(value={"password", "ssn"}) public c.. 2022. 2. 18.