Python 公开基于GraphQL的API
我将数据存储在文件系统中(跨多个小文件进行规范化),并编写了python函数来读取/写入文件系统中的数据。读取API返回Job类型的对象。Write API要求将Job类型的对象作为参数传递Python 公开基于GraphQL的API,python,django,graphql,graphene-python,graphene-django,Python,Django,Graphql,Graphene Python,Graphene Django,我将数据存储在文件系统中(跨多个小文件进行规范化),并编写了python函数来读取/写入文件系统中的数据。读取API返回Job类型的对象。Write API要求将Job类型的对象作为参数传递 def get_jobs(starttime, endtime): ''' Reads and returns jobs that ran between starttime and endtime interval ''' def put_job(job): ''' Persists Job
def get_jobs(starttime, endtime):
''' Reads and returns jobs that ran between starttime and endtime interval '''
def put_job(job):
''' Persists Job object to a file system '''
class Job:
def __init__(self, name, key, starttime, endtime):
self.name = name
self.key = key
self.starttime = starttime
self.endtime = endtime
现在我想通过web服务器公开这些函数。我更喜欢用Django公开GraphQLAPI
问题:
- Django/Django REST框架是正确的选择吗?我是新手 Django和GraphQL
- Django模型似乎与数据库紧密耦合。我是否必须创建另一个作业模型类,并使用read_jobs函数返回的作业创建它?如果是,如何从这里创建简单的web应用程序
- 作业对象是三级嵌套对象,具有许多属性。出于演示目的,我在问题中只保留了四个属性/属性
- 我更喜欢Django,因为我的应用程序在这个阶段可能看起来有点小,但随着时间的推移,它会增长,我需要添加很多功能。我特别寻找基于django graphene的应用程序的解决方案,而不使用SQLite DB,也不假设数据是从某个数据库获取的。我想利用持久性API方法从文件系统查询数据
谢谢你的帮助。我仍然更喜欢Django,因为我的应用程序在这个阶段可能看起来有点小,但随着时间的推移,它会增长,我需要添加很多功能。我特别寻找的解决方案是创建一个基于django graphene的应用程序,而不使用SQLite DB,也不假设数据是从某个数据库获取的。我想利用我的持久性API方法从文件系统查询数据。如下所示:。使用Django,您将不会避免使用数据库,至少对于用户和组来说是如此。。。但是,没有什么可以阻止您在不使用此数据库的情况下编写视图和处理请求。
from flask import Flask, jsonify
app = Flask(__name__)
class Job:
def __init__(self, name, key, starttime, endtime):
self.name = name
self.key = key
self.starttime = starttime
self.endtime = endtime
@app.route("/get", methods=['GET'])
def get_jobs(starttime, endtime):
''' Reads and returns jobs that ran between starttime and endtime interval '''
jobs = read_data(starttime, endtime) # your read_data() method
return jsonify({'jobs': jobs})
@app.route("/put", methods=['POST']) # or methods=['PUT']
def put_job(request):
# access your data trough the request object:
job_name = request.args.get('name', '')
job_key = request.args.get('key', '')
# or get it in json
job_data = request.json
write_data(Job.from_json(job_data))