繁体   English   中英

Python-如何绑定自定义端点Flask-Restful

[英]Python - How to bind custom endpoint Flask-Restful

我正在尝试使用python + flask-restful创建我的第一个API,并且在调用自定义端点时遇到错误。

例如,我有下面的代码:

from app import db, app
from app import manager
from datetime import datetime
from flask import jsonify

class Climate(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    date = db.Column(db.DateTime)
    rainfall = db.Column(db.Integer)
    temperature = db.Column(db.Integer)

    def predict():
        predictValue = Climate.query.filter_by(date=datetime.now().date())
        return predictValue

db.create_all()
manager.create_api(Climate, methods=['POST', 'GET', 'PUT', 'DELETE'])

当我开始运行run.py并执行GET请求-> http:// localhost:8080 / api / climate时,它将返回以下内容:

{
  "num_results": 2, 
  "objects": [
    {
      "date": "2018-10-07T00:00:00", 
      "id": 1, 
      "rainfall": 100, 
      "temperature": 15
    }, 
    {
      "date": "2018-07-10T00:00:00", 
      "id": 2, 
      "rainfall": 200, 
      "temperature": 20
    }
  ], 
  "page": 1, 
  "total_pages": 1
}

这样就可以了。 但是我想做一个自定义的端点。 例如,如果我调用http:// localhost:8080 / api / climate / predict,我想调用Climate类中的predict()方法以仅返回绑定请求日期的一项,但是当我这样做时请求,它只是返回

{}

无论如何要这样做? 谢谢。

解决了。

# endpoint to predict
@app.route("/climate/predict", methods=["GET"])
def climate():
    climate = Climate.query.filter_by(date=datetime.now().date()).first()
    if climate is not None:
        return jsonify(serializeClimate(climate))
    else:
        abort(404)

所有代码都在github上: https : //github.com/danielnicolay321/ParetoTest/blob/master/crud.py

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM