9

今回はRESTサービスに投稿するときに、別のJSONの問題があるようです。を使用してFlask-Restfulいます。

api.add_resource(Records, '/rest/records/<string:email>/<string:password>/<string:last_sync_date>')

parser = reqparse.RequestParser()
parser.add_argument('record_date', type=str)
parser.add_argument('records', type=str)
parser.add_argument('rating', type=str)
parser.add_argument('notes', type=str)

class Records(Resource):
    def post(self, email, password, last_sync_date):
        args = parser.parse_args()
        records = args['records'] # 'records' = None, but why? 
        return records, 201

単体テスト:

resource_fields = {
            'record_date': fields.String,
            'rating': fields.Integer,
            'notes': fields.String,
            'last_updated': fields.DateTime,
        }
records = {"records":[]}
records["records"].append(marshal(record1, resource_fields))
    rv = self.app.post('/rest/records/{0}/{1}/{2}'.format(email, password, sync_date), data=json.dumps(records))

json.dumps(records) は次のとおりです。

str: {"records": [{"rating": 1, "notes": null, "last_updated": "Tue, 15 Oct 2013 15:52:44 -0000", "record_date": "2013-10-15 15:52:44.746815"}]}

明らかにネットワーク経由で送信しているのに、なぜargs['records']None なのですか?

アップデート:

奇妙な部分は、私が単一のオブジェクトを送信するときです。とても奇妙:

record = dict(record_date=record1.record_date, rating=record1.rating, notes=record1.notes, last_updated=record1.last_updated)

rv = self.app.post('/rest/records/{0}/{1}/{2}'.format(email, password, sync_date), data=record)

引数:

{'records': None, 'notes': None, 'task': None, 'record_date': '2013-10-15 16:48:40.662744', 'rating': '1'}
4

2 に答える 2

-2
class Records(Resource):
    parser = reqparse.RequestParser()
    parser.add_argument('record_date', type=str)
    parser.add_argument('records', type=str)
    parser.add_argument('rating', type=str)
    parser.add_argument('notes', type=str)

    def post(self):
        args = parser.parse_args()
        records = args['records']
        return records, 201

うまくいくことを願っています。

于 2013-10-27T15:14:35.803 に答える