使用Docker和Flask入门GraphQL
首先
我参考了Graphene的教程。
GraphQL是一种如下所述的东西。
GraphQL是一种用于API查询的语言,并使用定义好的类型系统来执行查询的服务器运行时。GraphQL不受特定数据库或存储引擎的限制,而是由现有代码和数据提供支持。
要在Python中实现GraphQL,需要使用一个名为Graphene的工具。
Graphene是一个库,提供了用于在Python中实现GraphQL API的工具。
实施
我們這次的實作使用了Docker技術。
这是一个 GitHub 的代码库。
文件结构
.
├── docker-compose.yml
└── opt
├── Dockerfile
├── main.py
└── requirements.txt
进行解释
FROM python:3.8.8-buster
USER root
RUN apt-get update
RUN apt-get -y install locales && \
localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9
ENV TERM xterm
ENV PYTHONPYCACHEPREFIX=/root/pycache
RUN apt-get install -y vim less sqlite3
RUN pip install --upgrade pip --user
RUN pip install --upgrade setuptools --user
WORKDIR /root/opt
COPY . .
version: "3"
services:
web:
build: ./opt
container_name: "flask"
tty: true
volumes:
- ./opt:/root/opt
ports:
- 8080:8080
numpy==1.16.0
requests==2.23.0
Flask==2.2.2
Flask-Cors==3.0.10
graphene==3.2.1
石墨烯的图介绍
{
hello(name: "friend")
}
你好是跳出的模式名称。括号里是参数。以这种形式进行调用。
这是一个与resolve_hello模式集成的函数。
from graphene import ObjectType, String, Schema, Int
from flask import Flask, request, jsonify
from flask_cors import CORS
import json
app = Flask(__name__)
CORS(app)
class Query(ObjectType):
hello = String(name=String(default_value="bob"))
def resolve_hello(root, info, name):
return f'My name is {name}'
schema = Schema(query=Query)
@app.route('/', methods=['POST'])
def hello():
data = json.loads(request.data)
result = schema.execute(data['query']).data
return json.dumps(result)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8080)
结果是什么

