[SuperfluidClone] 2nd project - superfluid 클론 3일차: 회원가입, 로그인 엔드포인트(user API) 1차 완성, REST API 세션 짧은 정리, 크롤링 난관

Alex of the year 2020 & 2021·2020년 8월 5일
0
post-thumbnail

User API 1차 완성

회원가입과 로그인 엔드포인트를 구현했다. 정규 표현식을 사용해서 구현하는 것이 2차 프로젝트의 목표이기 때문에 1차 완성이라 표현하겠다. 프론트와 맞춰보았고 송신이 잘 되는 것을 확인했다. 하지만 validation 부분이 아쉽다. 다음주 혹은 이번 주말에 2차 수정 예정.

RESTful API 세션

(다소 난잡하지만 시간 관계상 빠른 정리 & 향후 수정 계획 많음)

웹에 존재하는 모든 자원에 고유한 규칙을 부여하는 방법론. 그 중 현재 가장 널리 사용되는 것이 RESTful API.

  • 대표적인 HTTP method: GET / POST / PUT / PATCH / DELETE
  • 필수: 메소드(위에 적은 다섯가지 동사) + 자원(명사형) —> '명사(자원)를 동사(메소드)하겠다'
    ex. 10번째 user 삭제: DELETE user/10
    ex2. 100번째 product를 가져온다: GET product/100

URL: 내가 자원에 접근하는 경로이므로 반드시 특정 데이터를 지칭해야 한다. 참고로 만약 그냥 get product만 치면 특정하는 product가 없으므로 전체 product가 나온다.

URL은 결국 엔드포인트를 향해 감. URL은 결국 자원을 기준으로 사용해야 한다. (cf. 메인페이지에는 상품, 유저, 이벤트 모든 자원이 모두 같이 있을 수 있다.) 프론트에서의
엔드포인트는 리소스, 그 자원에 도달하는 주소이지 메인페이지 같은거는 잘 안함(이라고 써놓았는데 이게 무슨 말인지 나도 모르겠다)

하나의 API 안에는 여러개의 엔드포인트가 있을 수 있음(참고: cafe24)
cf. Django: Web Application Server —> 그래서 Django로 만든 앱도 하나의 API라고 볼 수 있음

Endpoint
사람이 사는 그 집 정확한 상세주소(몇동 몇호) / 도메인 뒤쪽

URL
전체 Full address(도메인+엔드포인트)

API
모호함 그 자체

상품을 '나열'하든 '조건으로 필터링'하든 '특정 기준으로 정렬'하든 이 때 사용되는 API는 하나.

'쿼리 스트링' (쿼리 파라미터, 겟 파라미터): 겟 메소드와 주로 사용
쓰는 법: GET product?color=red(색상이 모두 빨간색인 프로덕트를 나열해달라)

같은 자원을 건드리는 엔드포인트는 굳이 다른 엔드포인트로 나누지 않고 같은 엔드포인트에서 필터링, 정렬을 해서(메소드 사용해서) 사용 : GET product, POST product, PATCH product/4 (4번 상품을 수정하겠다), DELETE product/6 (6번 상품을 삭제하겠다)
필터링 조건은 뒤에 쿼리 스트링으로

쿼리 스트링 작성 예시:
'서울에 있는 매장을 보여주렴'
: [get] http://숫자/store?district='서울' (쿼리 스트링에는 동사 사용하지 않는다)

'6번 상품을 삭제하렴'
: [delete] product/<int:product_id>
<int:product_id> 부분을 패스(path) 파라미터라고 함.

검색할 때는 GET + 쿼리스트링으로
검색 키워드는 body를 통해 전달하지 않고 쿼리 스트링을 활용

GET : 쿼리, 파라미터(get product/1 라고 쓸 때의 1을 파라미터라고 부름)
POST : 바디

PUT과 PATCH는 둘 다 수정하기 위한 메소드이나
put의 경우 사용자의 필수키가 모두 존재해야 한다. (덮어쓰기/전체 수정)
patch는 바꾸는 부분만 키가 있으면 된다. (수정/일부 수정)

상품정보 크롤링 난관

크롤링에서 애를 먹고 있다. 지금은 내가 크롤링을 이해하는 단계라 아주 고달프지만 우선 오늘 2시반까지만 더 달려보겠다. 사실은 밤을 새고자 했으나, 내일은 소셜 로그인 세션이 있는 관계로 그럴 수 없겠다. 현재 난관은 상품 이미지를 긁는데에서 발생하고 있는데 잘되기만 하면 잘 정리해서 올리겠다. 꼭 그럴 수 있으면 좋겠군.

내일 예상

이미지 크롤링 완료
소셜 로그인 세션
크롤링 좀 더
크롤링한 정보 CSV 파일 --> DB화 작업

profile
Backend 개발 학습 아카이빙 블로그입니다. (현재는 작성하지 않습니다.)

0개의 댓글