Fosrestbundle: HTTP ์‘๋‹ต์˜ ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ๊ธฐ๊ณ„ ํŒ๋… ๊ฐ€๋Šฅ ์„ธ๋ถ€ ์ •๋ณด์— ๋Œ€ํ•œ ๋ฌธ์ œ ์„ธ๋ถ€ ์ •๋ณด

์— ๋งŒ๋“  2019๋…„ 08์›” 12์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: FriendsOfSymfony/FOSRestBundle

์˜ค๋ฅ˜ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ์‘๋‹ต ๊ตฌ์กฐ์— ๋Œ€ํ•œ RFC 7807์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ https://tools.ietf.org/html/rfc7807์„ ์ฐธ์กฐ
์–‘์‹ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์˜ค๋ฅ˜์˜ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

   {
   "type": "https://example.net/validation-error",
   "title": "Your request parameters didn't validate.",
   "invalid-params": [ {
                         "name": "age",
                         "reason": "must be a positive integer"
                       },
                       {
                         "name": "color",
                         "reason": "must be 'green', 'red' or 'blue'"}
                     ]
   }

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์‹ค์ œ๋กœ ํ˜„์žฌ ํ˜•์‹๋ณด๋‹ค ๋” ์ ํ•ฉํ•ด ๋ณด์ด์ง€๋งŒ ์‚ฌ์šฉ์ž๋Š” ์ด ๋ฒˆ๋“ค์˜ ๋‹ค์Œ ์ฃผ์š” ๋ฆด๋ฆฌ์Šค๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๋ฐ ๋งŽ์€ ์—๋„ˆ์ง€๋ฅผ ํˆฌ์žํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ ํ”„๋กœ์ ํŠธ์— ์ด rfc๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  4 ๋Œ“๊ธ€

์‹ค์ œ๋กœ ํ˜„์žฌ ํ˜•์‹๋ณด๋‹ค ๋” ์ ํ•ฉํ•ด ๋ณด์ด์ง€๋งŒ ์‚ฌ์šฉ์ž๋Š” ์ด ๋ฒˆ๋“ค์˜ ๋‹ค์Œ ์ฃผ์š” ๋ฆด๋ฆฌ์Šค๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๋ฐ ๋งŽ์€ ์—๋„ˆ์ง€๋ฅผ ํˆฌ์žํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ ํ”„๋กœ์ ํŠธ์— ์ด rfc๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Symfony 4.4์—๋Š” ์ด RFC์™€ ํ˜ธํ™˜๋˜๋Š” ์ƒˆ๋กœ์šด ์˜ค๋ฅ˜ ๋ Œ๋”๋ง์ด ์žˆ์Šต๋‹ˆ๋‹ค. FosRestBundle์„ SF 4.4์™€ ํ˜ธํ™˜๋˜๋„๋ก ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉ ์ค‘๋‹จ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ์ƒˆ๋กœ์šด ์˜ค๋ฅ˜ ๋ Œ๋”๋ง์œผ๋กœ ์ „ํ™˜ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๋ณ€ํ™”๋Š” ์กฐ๋งŒ๊ฐ„ ์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์ตœ์ƒ์˜ ์ „ํ™˜์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ํ˜„์žฌ ์˜ค๋ฅ˜ ์‘๋‹ต ์ฒ˜๋ฆฌ์ด์ง€๋งŒ rfc ์‘๋‹ต ๊ตฌ์กฐ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ด ๋ฒˆ๋“ค์— ๋Œ€ํ•œ ์ƒˆ ๊ตฌ์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ์˜ค๋ฅ˜ ์‘๋‹ต ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ง€์ • ์‘๋‹ต ๊ตฌ์กฐ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

FOSRestBundle 2.8/3.0์—์„œ๋Š” flatten_exception_format ์˜ต์…˜๊ณผ ํ•จ๊ป˜ Symfony ErrorHandler ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ RFC 7807 ํ˜ธํ™˜ ์˜ค๋ฅ˜ ์‘๋‹ต์„ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

fos_rest:
       exception:
           flatten_exception_format: 'rfc7807'
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰