使用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)

结果是什么

Screenshot 2023-01-25 at 15.48.51.png
Screenshot 2023-01-25 at 15.48.59.png
广告
将在 10 秒后关闭
bannerAds