jeuxdeau / Vaseline

2018년 봄학기 소프트웨어 개발의 원리와 실제 (M1522.000100) 12조
5 stars 0 forks source link

Sign Up Backend & Backend Model #15

Open jinwoo71 opened 6 years ago

jinwoo71 commented 6 years ago
jinwoo71 commented 6 years ago

@jeuxdeau 우빈아, SignUp 백엔드 구현했어! frontend에서 backend로 signup 정보를 post할 때 아래의 양식에 맞춰서 post해주면 돼 테스트 해봤어! 이미 있는 username으로 signup 못하게도 해놨고 양식 잘못되어도 아마 에러날거야 POST URL은 localhost/users/ 로 보내면 돼!

jinwoo71 commented 6 years ago

정신없이 짜서 코드에 아직 주석들은 못적었어.. 조만간 채워둘게 @AirHorizons @SonSang @jeuxdeau 모두 의견 부탁드릴게요

  1. Profile (**계획에 없던 것) 유저의 정보를 담는 모델을 새로 만들었어. 사실 유저 모델을 상속한 모델을 만들어도 될텐데, 찾아보니까 그러면 몇몇 문제들이 있는 것 같아서 User과 OneToOne 관계를 갖는 Profile 모델을 만들었어.

  2. DesiredMate, Personality, MatingSeason Companion의 Field들인데 얘네는 구조체처럼 들고다니기로 해서 새로 모델을 만들어서 마찬가지로 Companion Model과 OneToOne 관계를 가지도록 구현했어.

  3. Like, Proposal, Message Companion 모델이 여러 개의 Like, Proposal, Message 모델을 가질 수 있어서 ForeignKey를 이용해서 구현했어!

  4. Companion User은 여러개의 Companion을 가질 수 있으니 마찬가지로 user과 foreignkey를 통해 연결해주었고, DesiredMate, Personality, MatingSeason와는 OneToOne 관계를 가지도록 구현했어

SonSang commented 6 years ago

진우 넘 수고했어...!!@@ +) 전체적으로 다 괜찮은 것 같아!ㅎㅎ 그런데 백엔드 쪽에서 url설정할 때 /companions/가 아니라 /api/companions/처럼 프론트 / 백 구분짓기 쉽도록 api를 앞에다 다 붙여주면 좋을 것 같아ㅎㅎ

jinwoo71 commented 6 years ago

@SonSang 감사합니다! 그렇게 할게요!!!

jinwoo71 commented 6 years ago
  1. postal code는 integer field로 구현했는데 우리 Design & planning에서는 (int ,int)로 type이 적혀있던 것 같아. 요즘 우편번호 5자리로 변경되면서 하나로 통합되어서 일단 integer field로만 할게!
  2. personality field는 전부 integer로 바꿀게 저번에 우빈이랑 얘기해서 enum말고 integer로 받기로 했던 것 같은데 내가 아직도 안고쳤었네 고쳐서 곧 올릴게!
  3. companion에 age를 빼고 birth_year field 추가할게
jinwoo71 commented 6 years ago

@jeuxdeau 우빈아 조금 수정됐어 (birth_year과 personality) SIgnup Post 보낼 때 아래와 같은 양식으로 데이터 보내줘 url도 '/api/users/'로 바뀌었어

{ "username": "post_test1", "password": "pbkdf2_sha256$100000$4z7u0s1klKMJ$L2Qb/jSUJ+EMijaV2roGjx1lBM3LZF8LgrZJVwfg/14=", "companion": { "name": "posttest1", "sex": "male", "birth_year": 1995, "breed": "labrador_retriever", "size": "medium", "desired_mate": { "breed": "beagle", "sex": "male", "size": "small" }, "personality": { "affinity_with_human": 2, "affinity_with_dog": 3, "shyness": 4, "activity": 5, "loudness": 4, "aggression": 3, "etc": "this_is_etc" }, "mating_season": { "season_start": "2018-05-11T07:34:16Z", "season_end": "2018-05-11T07:34:16Z" }, "like_sent": [], "like_received": [], "proposal_sent": [], "proposal_received": [], "message_sent": [], "message_received": [] }, "profile": { "nickname": "post_test_닉네임", "postal_code": 14600, "rough_address": "test의", "detailed_address": "집입니다.", "age": 22, "gender": "male", "email": "email@snu.ac.kr" } }

jinwoo71 commented 6 years ago

screenshot from 2018-05-12 18-56-43

jeuxdeau commented 6 years ago

image

먼저! 고생 많았다...

디테일하게는 사인업 하면서 볼텐데 대충 보기로는 멋지구... 궁금한 점은 두 가지로

  1. User랑 Profile 분리해 놓은 이유 간단히만 알려줄 수 있는지?
  2. DesiredMate, Personality, MatingSeason를 따로 모델로 만드는 것에 대해서: 이건 우리 전부 예전부터 의문이 있었던 거긴 한데 답이 안 나왔네. 더 찾아볼게. 이렇게 해도 무슨 문제가 생길 것 같지는 않은데 모델이라는 개념적으로는(?) 쟤네들을 모델로 만들 필요는 없다고 생각해서.
jinwoo71 commented 6 years ago

@jeuxdeau

  1. USer model 확장기법으로는 https://wikidocs.net/6651 이 페이지를 참고했는데, 솔직히 간단하게 설명만보고 Profile 나눠서 구현하는게 제일 간단하고 더 생각해야할 문제가 없는 것 같아서 그렇게 구현했어

  2. 나도 굉장히 맘에 안들어... DesiredMate, Personality, MatingSeason 모델로 구현안하고 다른 방식으로 구현할 수 있으면 다 갈아엎어버리고 그 방법을 택할 용의가 있어! 하지만 잘 모르겠고 일단 모델로 구현해도 작동은 하니까 구현은 해놨어...

jeuxdeau commented 6 years ago

우빈할일