GrpahQL(gql)은 페이스북에서 만든 쿼리언어.

sql은 데이터 베이스 시스템에 저장된 데이터를 효율적으로 가져오는게 목적

gql은 웹 클라이언트가 서버로 부터 데이터를 효과적으로 가져오는게 목적

그래서

sql은 주로 백엔드에서 작성, 호출하고

gql 클라이언트에서 작성, 호출합니다.

 

REST API와 차이

REST API는 URL, METHOD조합하기 때문에 다양한 endpoint가 존재,

gql은 하나의 endpoint만 존재

REST API와 GraphQL API의 사용 (출처 : https://blog.apollographql.com/graphql-vs-rest-5d425123e34b)

이러한 점때문에 여러번 요청할필요 없이 한번의 네트워크 요청으로 처리가 가능

 

클라이언트에서 가져오고 싶은 데이터 쿼리로 잘 정리해서 요청하면 그냥 받을수있어! 백엔드에서 쿼리 작성해두고 그럴 필요가없어 좋다

리졸버 (데이터를 가져오는 구체적인 과정) 직접 구현해야함, 데이터 소스에 상관없이 구현가능?

gql의 협업 구조상 프론트엔드쪽에 할일이 조금더 많아지고 힘이실리는 느낌이다.

const fullUser = await db.User.findOne({
                where: { id },
                attributes: ['id', 'nickname'],
                include: [{
                    model: db.TodoList,
                    attributes: ['id', 'startDate', 'finish'],
                }],
                order: [[{ model: db.TodoList },'startDate', 'ASC']],
            });

include먼저 해주고 나서 order써서 정렬하는 모델을 정해준다

'[Web-BackEnd]' 카테고리의 다른 글

GraphQL 이란  (0) 2020.10.16
자주 사용되는 HTTP상태코드 종류  (0) 2020.05.25

 2XX: 성공 코드, 200(성공), 201(작성됨)

 3XX: 리다이렉션(다른 페이지로 이동) 상태 코드. 특정 주소 입력시 다른주소로 넘어갈때 사용, 301(영구 이동), 302(임시 이동)

 4XX: 요청 오류. 요청에 오류가 있을때 사용. 401(권한 없음), 403(금지됨), 404(찾을 수 없음)

 5XX: 서버 오류를 나타냅니다. 요청에는 문제없는데 서버에서 오류가 생겼을경우 사용. 500(내부 서버 오류), 502(불량 게이트웨이), 503(서비스를 사용할 수 없음)

'[Web-BackEnd]' 카테고리의 다른 글

GraphQL 이란  (0) 2020.10.16
Sequelize include한 데이터 정렬하는 방법  (1) 2020.07.14

mysql 연동을 위해 mysqlclient를 설치중 오류가 발생합니다.

아마도 자신의 환경에 맞는 패키지를 설치하지 않아서 생기는 문제같습니다.

https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient.Then

 

Python Extension Packages for Windows - Christoph Gohlke

by Christoph Gohlke, Laboratory for Fluorescence Dynamics, University of California, Irvine. Updated on 26 March 2020 at 04:43 UTC. This page provides 32- and 64-bit Windows binaries of many scientific open-source extension packages for the official CPytho

www.lfd.uci.edu

위의 사이트에 접속하셔서 자신의 파이썬 버전에 맞춰 whl파일을 받으신후

pip install mysqlclient-1.4.6-cp37-cp37m-win32.whl

이렇게 직접 설치해주시면 됩니다.

장고의 내장 로그인 기능 이용시 간단하게 로그인후 이전페이지로 이동할수있다.

 

로그인 폼안에 아래의 코드를 추가해주면 자동으로 적용된다.

<input type="hidden" name="next" value="{{ next }}">

 

너무편하다

파이참에서 작업하던 프로젝트를 라즈베리로 옮겨서 실행하니 

django.db.migrations.exceptions.NodeNotFoundError 에러가 뜨면서 실행이 되지않았다.

검색해보니 마이그레이션을 재설정하면 된다고 한다.

 

1. 프로젝트 내에 모든 마이그레이션 파일 제거

__init__.py를 제외한 모든것을 제거

find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc"  -delete

2. 초기화후 스키마 생성

python manage.py makemigrations
python manage.py migrate

 

이렇게하고 다시 서버를 돌려보니 잘실행된다. 

유저정보를 가져와서 쿠키로 저장후 자바스크립트에서 읽어주면 된다.

django쪽 코드

def dashboard(request):
    response = render(request, 'index_main.html')  # django.http.HttpResponse
    user=request.user
    topic=user.topic
    response.set_cookie(key='topic', value=topic)
    return response

request.user : user객체 받기

user.topic : user객체에 topic이라는 값

 

자바스크립트쪽 코드

var topic=getCookie('topic');

function getCookie(name) {
	var value = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');
	return value? value[2] : null;
}

getCookie(name) : 쿠키를 가져오는 함수

 

+ Recent posts