Как объединить Flask REST API и Flask Web App? - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь объединить API с приложением, но у меня проблемы с POST.

Я могу выполнить GET, когда я пытаюсь POST 'item' с помощью графического интерфейса Web App, я получаю: Метод не разрешен Метод не разрешен для запрошенного URL.

Основной раздел

api.add_resource(Item, '/api/v1/item/<string:name>')

if __name__ == '__main__':
    db.init_app(app)
    app.run(port=5001, debug=True)

API раздел

class Item(Resource):
    parser = reqparse.RequestParser()
    parser.add_argument('price',
                    type=float,
                    required=True,
                    help="This field cannot be left blank!"
                    )
    parser.add_argument('store_id',
                    type=int,
                    required=True,
                    help="Every item needs a store id."
                    )

    def post(self, name):
        if ItemModel.find_by_name(name):
            return {'message': "An item with name '{}' already exists.".format(name)}, 400

        data = Item.parser.parse_args()
        item = ItemModel(name, **data)  # data['price'], data['store_id']

        try:
            item.save_to_db()
        except:
            return {"message": "An error occured inserting the item."}, 500  # Internal Server error

        return item.json(), 201

Приложение APP

@app.route('/item/<name>', methods=['POST'])
def item(name):
    data = {
        'price': '16.99',
        'store_id': '1',
    }

    r = requests.post('http://localhost:5001/api/v1/item/'+name, data)
    return r.status_code

ItemModel

class ItemModel(db.Model):
     __tablename__ = 'items'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))
    price = db.Column(db.Float(precision=2))
    store_id = db.Column(db.Integer, db.ForeignKey('stores.id'))

    store = db.relationship("StoreModel")

def __init__(self, name, price, store_id):
    self.name = name
    self.price = price
    self.store_id = store_id

def json(self):
    return {
            'id': self.id,
            'name': self.name,
            'price': self.price,
            'store_id': self.store_id
        }

Суть в том, что я хотел бы добавлять элементы через графический интерфейс, форму ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...