EasyAndBeauty / DailyReceipt-BE-WEB

4 stars 0 forks source link

[feature] 영수증 API 추가 #30

Closed mdgarden closed 1 year ago

mdgarden commented 1 year ago

API 간이 명세서

현재 확정된 API

Interface Recipt
id number Recipt 테이블의 고유 인덱스. 이 테이블의 영수증들은 모든 영수증이 아니라 한번이라도 핀 된 영수증을 모아두는 테이블입니다.
todos Integer[] 영수증을 핀했을 때의 todo 목록입니다. 외래키로 참조하지 않으며, 이 테이블에 한번 기록된 todo 항목은 내용이 수정되지 않아야 합니다.
pinned bool 현재 핀의 상태를 표시합니다.
famous_saying string 영수증과 함께 만들어진 명언입니다.
receipt_name string 유저가 영수증을 핀했을 당시의 유저 닉네임입니다. 이 항목에 저장된 유저 닉네임과 현재 유저 닉네임이 다를 수 있습니다.
createdAt date 이 영수증 항목이 만들어진 실제 시간입니다.
updatedAt date 이 영수증 항목이 최근에 수정된 시간입니다.

Category: Receipt

API Name Get Pinned Receipt
설명 해당 유저의 핀 된 영수증 목록을 돌려줍니다.
pinnedtrue인 항목만 돌려줍니다.
Method GET
Path /api/v1/receipt
Params none
Request none
Response Receipt[]
Auth required
API Name POST Pinned Receipt
설명 영수증을 등록합니다.
Method POST
Path /api/v1/receipt
Params none
Request body: Receipt
Response none(status만 return)
Auth required
API Name PUT Pinned Receipt
설명 영수증을 수정합니다.
Method PUT
Path /api/v1/receipt
Params none
Request body: Receipt 수정할 항목만 보내도 OK. 예) {pinned : false}
Response Receipt
Auth required
gygy7151 commented 1 year ago

와웅... 깔끔한 정리 고맙습니다 마당!! 수고많으셨어용!!

java-saeng commented 1 year ago

todos는 외래키를 참조해야할 것 같아요 todo를 String 저장이 아닌 객체로 저장하기 때문에 객체끼리 맵핑하기 위해서는 외래키가 필요합니다.

java-saeng commented 1 year ago

그리고 아마 유저 아이디도 참조해야 할 듯 싶습니다,, 누구의 receipt인지 알기 위해서요!

java-saeng commented 1 year ago

todos 에서 "이 테이블에 한번 기록된 todo 항목은 내용이 수정되지 않아야 합니다." 라고 하셨는데, 사용자가 todo를 핀을 하고, 핀을 해제하고 나서 todo를 수정할 경우에는 새로운 receipt가 만들어지는 걸까요?

mdgarden commented 1 year ago

todos는 외래키를 참조해야할 것 같아요 todo를 String 저장이 아닌 객체로 저장하기 때문에 객체끼리 맵핑하기 위해서는 외래키가 필요합니다.

그리고 아마 유저 아이디도 참조해야 할 듯 싶습니다,, 누구의 receipt인지 알기 위해서요!

요 부분은 우가 문서 수정해주시면 될 것 같습니다!

todos 에서 "이 테이블에 한번 기록된 todo 항목은 내용이 수정되지 않아야 합니다." 라고 하셨는데, 사용자가 todo를 핀을 하고, 핀을 해제하고 나서 todo를 수정할 경우에는 새로운 receipt가 만들어지는 걸까요?

넵 맞습니다! pinned 영수증은 박제에 의미가 있어서 수정은 불가할 예정입니다.

java-saeng commented 1 year ago
  1. 만약에 영수증을 저장하고 나서, 해당 날짜의 todo를 수정하게 된다면 해당 날짜에 만들어진 receipt의 pin은 false로 변경하게끔 api 요청을 하실건가요~?

  2. PUT 관련해서 궁금한 점이 있습니다.

    body: Receipt 수정할 항목만 보내도 OK. 예) {pinned : false} receipt 수정할 항목만 보내도 라는 말씀이 무슨 뜻인지 이해가 잘 안됩니다 ! receipt는 박제하신다고 하셔서,, 수정을 하는 건 pin 만 가능하다는 말씀이실까여?

mdgarden commented 1 year ago
  1. 네! pin을 false로 변경하는 api를 요청할 것 같습니다. 생각해보니 박제라서 이게 true가 될 일은 없겠네요
  2. 듣고보니 말씀하신대로입니다 ㅋㅋㅋ ㅠㅠ 요 api는 그냥 소프트 딜리트라고 생각하셔도 무방할 것 같아요. {pin:false}말고 다른 수정항목은 없습니다.
java-saeng commented 1 year ago

receipt를 수정할 때 receipt id를 받아서 수정을 하는데, receipt id는 유저가 receipt를 조회할 때 receipt id를 같이 줘야할까요?

java-saeng commented 1 year ago

Postman 적용 시키는 법

  1. postman json 파일을 다운 받습니다.
  2. import를 누릅니다 image
  3. 1번에서 다운받은 파일을 올린다음에 import를 하시면 됩니다.

스프링을 실행시키고 localhost:8080/docs/index.html 에서 api 문서 + postman 을 참고해서 api 테스트 해보시면 됩니다.