분류 전체보기 260

[Django] 아임포트 이론

용어정리 PG사 결제대행사. 내가 어떤 상품에 대해 XX카드로 5만원 결제를 원한다고 요청을 보내면, 온라인 상에서 실제로 XX카드를 들고 XX카드사에 결제를 해 주는 회사이다. 가맹점 이 PG사들과 계약을 맺고 PG사를 통해 결제를 맡기는 점포. 즉 우리의, 내가 관리하는 웹 서버이다. 결제 프로세스의 이론적 설명 https://github.com/iamport/iamport-manual/tree/master/인증결제 GitHub - iamport/iamport-manual: 아임포트(iamport) 결제연동을 위한 매뉴얼입니다. 아임포트(iamport) 결제연동을 위한 매뉴얼입니다. Contribute to iamport/iamport-manual development by creating an ac..

ETC/아임포트 2022.09.01

[HTTP] HTTP 메서드 활용 - HTTP API 설계 예시

우리가 회원 관리 API 를 제공한다고 가정해보자. 그때, URI GET POST 등을 어떻게 사용해야 하는지 배워보자. 그런데, POST와 PUT 모두 데이터를 등록할 때 사용하는데 이를 어떻게 구분해야 하는지가 중요하다. 이전에도 정리한 내용인데, URI는 리소스(members)를 식별하는 용도로 사용하는 것이다. 리소스의 행위를 식별하는 것은 최대한 지양해야 한다. 그런 행위들은 HTTP method를 통해 식별 가능하기 때문이다. GET의 경우 /members 을 request-target으로 지정한다. 데이터가 100만개 이면 적절한 필터링이 필요하고 이러한 필터링은 query parameter의 검색어를 통해 조회하게 된다. 정렬하고 싶으면 그것 역시 query parameter를 사용한다. ..

Server/HTTP 2022.08.12

[HTTP] HTTP 메서드 활용 - 클라이언트에서 서버로 데이터 전송

/static/star.jpg 에 요청을 하게 되면 별 이미지를 내려준다. 이 경우는 클라이언트 요청 메세지의 header에 path만 지정하고 query parameter를 사용하지 않아도 된다. 조회를 할때 데이터를 전달하는 경우가 존재하며, 동적 데이터를 조회하는 경우이다. 예를 들어, 검색 조회의 경우 검색어를 query parameter로 보내게 된다. Form tag를 하용하고 /save 로 post 메소드를 사용하면 저장이 된다고 하자. submit type의 버튼을 누르게 되면 웹 브라우저는 form의 데이터를 읽어서 오른쪽 그림과 같이 HTTP 메세지를 생성하고 해당 HTTP 메세지를 packet으로 만들어서 인터넷 망으로 던지게 된다. 여기서, Content-Type을 applicati..

Server/HTTP 2022.08.11

[HTTP] HTTP Method

목차 HTTP API를 만들어보기 HTTP 메서드 - GET, POST HTTP 메서드 - PUT, PATCH, DELETE HTTP 메서드의 속성 HTTP API를 만들어보자 회원 목록 조회 - 회원 리스트를 확인할 수 있다. 회원 조회 - 회원 리스트에서 선택해서 상세화면으로 들어가면 회원을 조회할 수 있다. 회원 등록, 수정, 삭제가 필요하다. 회원을 조회하고 등록, 수정, 삭제하는 것이 리소스(자원)가 아니다. 미네랄을 캐는 행위가 리소스가 아니라, 미네랄 그 자체가 리소스이다. 회원이라는 것만 리소스로 식별하면 된다. 그것을 URI에 매핑하면 된다. 그래서 URI 는 다음과 같이 설계되어야 한다. 리소스에 집중해서 URL를 설계했는데, 조회 등록 수정 삭제는 어떻게 구분해야 하는거지? 답: HT..

Server/HTTP 2022.08.11

[HTTP] HTTP 기본

목차 모든 것이 HTTP - 어디까지 할 수 있는가 Client Server 구조 Stateful, Stateless Connectionless (비연결성) HTTP Message HTTP (HyperText Transfer Protocol) HyperText(문서 간의 링크를 통해 연결할 수 있는 HTML)를 전송하는 규약으로 시작되었다. 현재는 모든 형태의 데이터를 HTTP를 통해서 전송한다. (서버간의 통신도 TCP를 사용하지 않고 HTTP를 사용하며, 간혹 게임 서버 같은 경우에는 TCP 계층으로 통신하기도 한다.) 기능은 HTTP/1.1 에 다 들어있고 가장 많이 사용해서 가장 중요한 버전이다. HTTP/2 와 HTTP/3 는 성능 개선만 추가되어 한 것이기에 많이 사용하지는 않는다. RFC26..

Server/HTTP 2022.08.10

[HTTP] URI와 웹 브라우저 요청 흐름

목차 URI 웹 브라우저 요청 흐름 URI (Uniform Resource Identifier) 리소스를 식별하는 통합된 방법 "URI는 Locator, Name 또는 둘 다 추가로 분류될 수 있다." https://www.ietf.org/rfc/rfc3986.txt Resource를 식별한다. 주민번호 같이 자원을 식별하는 것이다. URL은 리소스 위치를 식별하는 것이다. URN은 리소스 이름을 식별한다. URI는 리소스 위치과 이름을 식별한다. Resource는 html 파일 뿐 아니라 실시간 교통정보 같은 식별 가능한 모든 것을 말한다. URN을 정한다고 해서 실제 리소스를 찾는 방법이 없다. 시도 되었지만 잘 마무리 되지 않아서 잘 사용하지 않는다. URL 전체 문법과 각 요소들에 대해 살펴보자 ..

Server/HTTP 2022.08.10

[HTTP] 인터넷 네트워크

HTTP 또한 인터넷 망 위에서 동작하기에 네트워크 지식이 필요하다. 내 PC에서 Server와 Client가 동시에 있으면 Table 연결해서 사용하면 된다. 하지만 Server와 Client가 물리적으로 먼 거리에 존재하면 우리는 인터넷을 사용해야 한다. 그리고 복잡한 인터넷 망을 이해해야 데이터를 인터넷 망을 통해 전달할 수 있다. 노드는 중간에 존재하는 각각의 서버이며 인공위성, 미국에 있는 아마존 서버 등등 여러 서버를 거쳐서 클라이언트에게 전달될까? 도대체 어떤 규칙으로 어떻게 넘어갈까? IP(Internet Protocol) 복잡한 인터넷 망에서 내가 원하는 곳까지 도달하는게 가능할까? 우리는 영어를 못하는데, 미국에서 스마트폰 없이 가장 가까운 이마트를 찾아가는 것이 가능할까? 그것이 가능..

Server/HTTP 2022.08.10

[HTTP] 기본 지식

기존 HTTP 동작 방식을 이해하고 있었고, 백엔드 개발자와 소통 과정에서 만들어진 API를 문서를 통해 잘 사용할 수는 있었다. 그런데 서버 개발을 시작하면서 API를 구현할 때, GET으로 구현 후 header로 받을지 POST를 통해 body로 받을지 어떤 것이 더 효율적이며 좋은지를 구분할 수 없었기에 배움이 필요하다고 생각했다. 그래서 배달의 민족 기술이사인 김영한 님의 "모든 개발자를 위한 HTTP 웹 기본 지식"을 수강하기로 했다. 총 강의는 340분(6시간 40분)이며, 8월 10일~11일 중으로 강의를 끝내고 만들던 API 구현을 마무리할 생각이다. 참고로 저자는 Java+SpringBoot가 아닌 Python+Django를 사용해서 백엔드를 구현하고 있다. 강의를 시작하며 해당 강의는 ..

Server/HTTP 2022.08.09

[Django] simple-jwt

https://naon.me/posts/til57 Django Rest Framework 활용하기 2 - @api_view - out.log Udemy 강의를 들으면서, DRF 공식문서를 보면서, 그리고 구글링하면서 정리한 내용입니다. Django REST Framework - Level One The @api_view Decorator - Part One DRF에서는 API 뷰에 쓸 수 있는 두 가지 wrapper를 제공한 naon.me https://blaize.tistory.com/80?category=935057 DRF 함수형 뷰 (@api_view) users/urls.py from django.urls import path from . import views app_name = 'users' ..

카테고리 없음 2022.08.08

[Django] 인증 인가 참고자료

User Token Authentication https://www.youtube.com/watch?v=s3jTweZiqfI&t=288s https://velog.io/@killi8n/Dnote-5-1.-Django-권한-설정-및-로그인-회원가입-구현-tmjmep5tcm Dnote 5 - 1. Django - 권한 설정 및 로그인 / 회원가입 구현 일단 권한을 설정 해야 하니까, Django로 돌아옵시다. django-rest-knox 라는 패키지를 다운로드 해야합니다. settings.py 이제 기본 권한을 설정했으니, notes 모델에서 owner 필드를 추가해주겠습니다. notes/ velog.io https://devkor.tistory.com/entry/03-Django-Rest-Framewor..

Server/Django issue 2022.08.08

[Django] Custom User

Reference https://dev-yakuza.posstree.com/ko/django/custom-user-model/ 장고(django)의 커스텀 유저 모델(Custom User Model) 장고(django) 프로젝트에서 사용되는 유저 모델(User Model)을 입맛에 맞게(Customization) 수정하여 사용해 봅시다. dev-yakuza.posstree.com https://blaize.tistory.com/89 Django User model Custom AbstractUser (사용자 정의 사용자 모델 대체) 일부 프로젝트에는 Django의 내장 사용자 모델이 항상 적절하지 않은 인증 요구 사항이 있을 수 있다. 예를 들어 일부 사이트에서는 사용자 이름 대신 이 blaize.tis..

Server/Django issue 2022.08.05

[Django] MySQL 테이블 전체 삭제

$ mysql -uroot -p mysql> SET @tables = NULL; SELECT GROUP_CONCAT(table_schema, '.', table_name) INTO @tables FROM information_schema.tables WHERE table_schema = 'DB명'; -- specify DB name here. SET @tables = CONCAT('DROP TABLE ', @tables); PREPARE stmt FROM @tables; EXECUTE stmt; DEALLOCATE PREPARE stmt; Reference https://bizmark.co.kr/setup-and-tips/mysql/mysql-테이블만-전체-삭제-하는법/ Mysql 테이블만 전체 삭제 하..

Server/Django issue 2022.08.05