使用Postman时,我的post方法被忽略(制作Flask API)

时间:2016-07-27 20:09:09

标签: python api flask peewee

每当我向http://0.0.0.0:8000/api/v1/fliers发帖请求时,它都会忽略它。我得到200 OK状态,数据库保持不变。我的get请求返回到它应该的状态,但是post请求被忽略。

奇怪的是,一切都很好,但现在还没有。我完全糊涂了。任何帮助,将不胜感激。

from flask import jsonify, Blueprint, abort

from flask.ext.restful import (Resource, Api, reqparse,
                               inputs, fields, marshal,
                               marshal_with, url_for)

from auth import auth
import models

flier_fields = {
    'name': fields.String
}

def flier_or_404(flier_id):
    try:
        flier = models.Flier.get(models.Flier.id==flier_id)
    except models.Flier.DoesNotExist:
        abort(404)
    else:
        return flier


class FlierList(Resource):
    def __init__(self):
        self.reqparse = reqparse.RequestParser()
        self.reqparse.add_argument(
            'name',
            required=True,
            help='No name provided',
            location=['form', 'json']
        )
        super(FlierList, self).__init__()

    def get(self):
        fliers = [marshal(flier, flier_fields) for flier in     models.Flier.select()]
        return {'fliers': fliers}

    @marshal_with(flier_fields)
    @auth.login_required
    def post(self):
        args = self.reqparse.parse_args()
        flier = models.Flier.create(**args)
        return (flier, 201)

class Flier(Resource):
    def __init__(self):
        self.reqparse = reqparse.RequestParser()
        self.reqparse.add_argument(
            'name',
            required=True,
            help='No name provided',
            location=['form', 'json']
        )
        super(Flier, self).__init__()

    @marshal_with(flier_fields)
    def get(self, id):
        return flier_or_404(id)

    def put(self, id):
        return 400

    @auth.login_required
    def delete(self, id):
        query = models.Flier.delete().where(models.Flier.id==id)
        query.execute()
        return ('', 204)

fliers_api = Blueprint('resources.fliers', __name__)
api = Api(fliers_api)
api.add_resource(
    FlierList,
    '/api/v1/fliers',
    endpoint='fliers'
)
api.add_resource(
    Flier,
    '/api/v1/fliers/<int:id>',
    endpoint='flier'
)

0 个答案:

没有答案