使用Postman时,我的post方法被忽略(生成一个Flask API)

2024-05-18 08:45:26 发布

您现在位置:Python中文网/ 问答频道 /正文

每当我对http://0.0.0.0:8000/api/v1/fliers执行post请求时,它都会忽略它。我得到了200ok状态,数据库保持不变。我对该请求的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'
)

Tags: nameimportselfapiidfieldsgetreturn