通过url定义变量输出的Flask API



我正在使用flask编写一个API。

我希望API根据url返回表类别的列类别或列子类别中的元素。

例如http:/类别/子类别或http:/类别/类别

我试图创建变量category_type并将其分配给输出d,但它不起作用。

 class Categories(db.Model):
      __tablename__ = 'categories'
      category = db.Column(db.Text)
      subcategory = db.Column(db.Text, primary_key = True)
 @app.route('/categories/<string:category_type>', methods=['GET'])
 def categories(category_type):
     if request.method == 'GET':
         results = Categories.query.all()
         json_results = []
         for result in results:
             d = {'Category': result.category_type}
             json_results.append(d)
         return jsonify(items=json_results)

更改类别的方法如下所示:

@app.route('/categories/<string:category_type>', methods=['GET'])
def categories(category_type):
    if category_type.lower() not in ('category', 'subcagory'):
        flask.abort(404)
    if request.method == 'GET':
        results = Categories.query.all()
        json_results = []
        for result in results:
            d = {'Category': getattr(result, category_type.lower())}
            json_results.append(d)
        return jsonify(items=json_results)

更新:如果要删除重复项,请将json_results变量类型更改为set,如下所示:

@app.route('/categories/<string:category_type>', methods=['GET'])
def categories(category_type):
    if category_type.lower() not in ('category', 'subcagory'):
        flask.abort(404)
    if request.method == 'GET':
        results = Categories.query.all()
        json_results = set()
        for result in results:
            d = {'Category': getattr(result, category_type.lower())}
            json_results.add(d)
        return jsonify(items=json_results)

最新更新