目的
GraphQLを実装している際に、GraphiQLが使えない環境でシェルから呼び出して動作確認したい場合の対応です。
外部への接続が遮断されている環境で、動作確認する必要がある場合には以下の様なシェルスクリプトを書くと良いかと思います。
作成したシェルスクリプト
#!/bin/bash
GRAPHQL_API_ENDPOINT="http://127.0.0.1:8000/graphql"
# ここにガンガン、クエリを書いてください。
ORG_QUERY=`cat << EOS
query {
clubs {
id
name
}
}
EOS
`
QUERY=`echo ${ORG_QUERY} | tr '\n' ' '`
JSON_PARAM=`cat << EOS
{ "query": "${QUERY}" }
EOS
`
curl -H 'Content-Type: application/json' -X POST -d "${JSON_PARAM}" ${GRAPHQL_API_ENDPOINT}
CSRFのエラー(CSRF cookie not set.)が出るために、オフにしました。
Graphene Djangoで API を作成した場合 CSRF cookie not set.が表示されました。
私の場合は、動作確認だけが目的だったのでコメントアウトで対応しました。
settings.py
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]