본문 바로가기

전체 글137

TIL : 서버 인증 방법 (세션 / 쿠키, JWT) HTTP 요청 현재 모바일이나 웹 서비스에서 가장 많이 쓰이는 통신 방식은 HTTP 통신이다. HTTP 통신은 응답 후 연결을 끊게 되며 과거에 대한 정보를 전혀 담지 않는다. 즉 지금 보낼 HTTP 요청은 지난 번에 내 정보를 담아 보냈던 HTTP 요청과 전혀 관계가 없다는 말이다. 따라서 각각의 HTTP 요청에는 주체가 누구인지에 대한 정보가 필수적이다. 서버에 요청을 보내는 작업은 HTTP 메세지를 보내는 것이다. HTTP 메세지의 구조는 다음과 같다. 일반적으로 헤더와 바디 두 가지로 구성되며 공백은 헤더와 바디를 구분짓는 역할을 한다. 여기서 헤더에는 요청에 대한 정보들이 들어간다 바디에는 서버로 보내야 할 데이터가 들어가게 된다. 보통은 HTTP 메세지의 헤더에 인증 수단을 넣어 요청을 보낸다.. 2021. 8. 14.
2021.8.14 TIL : [GitHub] 잡다한 깃헙 명령어 아직까지 깃헙에 엄청난 친숙함을 느끼지는 못하고 있다. 특히 충돌이 일어났을 때 해결법은 여전히 잘 모른다. 오늘은 장고 프로젝트에서 secrets.json 파일을 통해 secret key를 분리하려고 했는데 .gitignore에 secrets.json 파일을 추가했음에도 불구하고 해당 json 파일이 그냥 깃헙에 올라가서 당황스러웠다. 알고 보니 종종 이런 경우가 발생하는데 깃의 캐시가 문제가 되는 것이라고 한다. 따라서 다음 명령어들을 이용하면 쉽게 캐시를 삭제하고 gitignore을 정상 작동 시킬 수 있다. git rm -r --cached . git add . git commit -m "fixed untracked files" 나는 gitignore이 작동하지 않아서 이미 secret key가 .. 2021. 8. 14.
2021.8.12 TIL : [Java] 기초 문법2 - 객체지향 프로그래밍 응용(2) 1. 추상 클래스 추상 클래스는 일반 클래스와 인스턴스를 생성할 수 없다. 따라서 추상 클래스를 사용하려면 먼저 서브 클래스에서 추상 클래스를 상속받은 후 서브 클래스의 인스턴스를 생성해야 한다. 자동차 클래스를 추상 클래스로 지정하면 자동차 클래스는 직접 인스턴스를 만들 수 없고 슈퍼 클래스의 역할만 한다. 그리고 추상 클래스를 만들기 위해서는 클래스 이름 앞에 abstract 키워드를 사용하면 된다. abstract class Car8{ int speed = 0; String color; void upSpeed(int speed) { this.speed += speed; } } class Sedan8 extends Car8{ } class Truck8 extends Car8{ } public clas.. 2021. 8. 12.
2021.8.9 TIL : [Django] DRF 4 - View Sets & routers DRF에서는 하나의 클래스에 관련한 뷰들의 집합을 합칠 수 있도록 해준다. 이것을 View Set이라고 부른다. 다른 프레임워크에서는 비슷한 개념을 'Resources'나 'Controllers'라고 부른다. (MVC의 C) 뷰 셋은 단순하게 보면 클래스 기반의 뷰 중에 하나인데 .get()이나 .post() 대신 .list()나 .create()같은 메서드 핸들러를 사용한다. View Set의 메서드 핸들러는 .as_view() 메서드를 사용하여 뷰를 종료하는 시점에 해당 작업에만 동작한다. 보통은 urls.py의 viewset에 일일이 view를 등록하기 보다는, 라우터 클래스로 view set을 등록하고 이 라우터가 자동으로 url을 결정해준다. 1. View Set 먼저 일반적인 viewset을 .. 2021. 8. 9.
2021.8.7 TIL : [Django] DRF 3 - authentication 사용자가 로그인하고 서버에 요청을 할 때 로그인해서 권한이 있는지 확인하는 데 authentication이 필요하다. BasicAuthentication 우리가 지난 글에서 작성했던 내용들은 HTTP basic authentication으로 클라이언트에게 아이디와 비밀번호만을 요청한다. 장고 rest framework 공식 문서를 확인하면 이 basic auth는 테스트 목적으로만 사용하는 것이 적절하다. 만약 이 auth 방법을 실제 프로덕트에서 사용하고 싶다면 https 를 통해서만 가능하게 하고 매번 아이디와 비밀번호를 물어보게 해야 한다. SessionAuthentication 장고의 기본 authentication 세션 백엔드를 사용한다. 이는 웹사이트와 동일한 세션 컨텍스트에서 실행되는 AJA.. 2021. 8. 7.
2021.8.6 TIL : [Django] DRF 2 - 클래스기반 api / 제네릭 클래스 기반(Generic Class-based) api 함수기반 views와 비슷하게 api를 작성한 지난 글에 이어서 클래스 기반 view를 통해 api를 만들어서 보낼 수 있다. 초기 설정이나 model, serializer 등은 지난 글에서 작성했던 것 그대로 이용하면 된다. 이 글에서 달라지는 것은 view랑 url 정도이다. 지난 번에도 말했듯이 view를 작성하는 방법에는 함수로 작성하는 방법과 클래스로 작성해서 내부 메서드로 함수를 작성하는 방법이 있다. 지난 번 내용과 동일한 동작을 수행하는 클래스를 작성해보면 다음과 같다. ... from rest_framework.views import APIView # Create your views here. class ArticleAPIView(APIView): def get(self, request).. 2021. 8. 6.