์ค๋ฅ ์ฌ๋ก์ ๋ํ ์๋ต ๊ตฌ์กฐ์ ๋ํ 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๋ฅผ ์ฌ์ฉํ๋ ์ต์ ์ ์ ๊ณตํ ์ ์์ง๋ง ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ ๋๋ฌธ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ํ์ง ์์ต๋๋ค.
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'
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ค์ ๋ก ํ์ฌ ํ์๋ณด๋ค ๋ ์ ํฉํด ๋ณด์ด์ง๋ง ์ฌ์ฉ์๋ ์ด ๋ฒ๋ค์ ๋ค์ ์ฃผ์ ๋ฆด๋ฆฌ์ค๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ๋ฐ ๋ง์ ์๋์ง๋ฅผ ํฌ์ํด์ผ ํฉ๋๋ค.
์ ํ๋ก์ ํธ์ ์ด rfc๋ฅผ ์ฌ์ฉํ๋ ์ต์ ์ ์ ๊ณตํ ์ ์์ง๋ง ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ ๋๋ฌธ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ํ์ง ์์ต๋๋ค.