문제 관찰 결과 -
POST /posts/1/comments
요청을 보내면 새로 생성되는 댓글 객체의postId
속성에 문자열 '1'이 저장됩니다. (원래는 숫자 1이 저장되어야 함. 이는 json-server의 버그)- 이렇게 관계를 나타내는 속성에 문자열이 저장되어 있을 경우,
_embed
가 제대로 동작하지 않는 것으로 보입니다. _embed
를 쓰지 않고도 요청을 한 번 더 보내서, 필요한 데이터를 가져올 수는 있습니다. 하지만 부가적인 요청을 보내야 하므로 페이지 로딩 속도가 느려집니다.
postId
속성에 문자열이 저장되는 버그를 회피하기 위해서, 댓글 생성 시 아래 코드를
await api.post(`/posts/${postId}/comments`, {
body: '...'
})
아래와 같이 고쳐 쓰세요. (postId 직접 넣어주기)
await api.post(`/comments`, {
body: '...'
postId: postId
})
다른 경우에도, 관계 설정을 해줄 때 중첩된 경로로 POST 요청을 보내지 마세요. 대신 관계를 나타내는 속성을 직접 저장해주세요. 이렇게 하면 xxxxId
에 숫자가 잘 저장되고, _embed
쿼리 스트링의 기능이 문제없이 동작합니다.
관계를 표현하는 속성 이름에는 꼭 단수를 써주셔야 합니다. 예를 들어, 쇼핑몰 API 서버의 경우라면
optionId
라고 적어줘야 합니다. (optionsId
가 아님!)