2017-11-23 13 views
0

에 객체 : 각각의 방법 ( 직렬화 mongoengine 여기 플라스크-편안하고 mongoengine 플라스크에 내장 된 간단한 REST API를의 예입니다 JSON

from flask import Flask, jsonify 
from flask_restful import Resource, Api 
from flask_mongoengine import MongoEngine 

app = Flask(__name__) 
app.config['MONGODB_SETTINGS'] = { 
    'db': 'persons', 
    'host': 'localhost', 
    'port': 27017 
} 
api = Api(app) 
db = MongoEngine(app) 

class Person(db.Document): 
    firstname = db.StringField(required=True) 
    lastname = db.StringField(required=True) 

class PersonList(Resource): 
    def get(self): 
     return jsonify(Person.objects) 

api.add_resource(PersonList, '/persons') 

if __name__ == '__main__': 
    app.run(debug=True) 

난 정말 (flask.jsonify 전화해야합니까)마다 그 DB와 거래) mongoengine 개체를 JSON으로 serialize하려면?

답변

0

예. jsonify은 JSON 출력을 Person.objects으로 Flask Response로 만듭니다.

아니요. 자원 끝점에서 JSON에 직렬화 가능한 데이터 구조 만 반환하면됩니다. 또한

def get(self): 
    return Person.objects.to_mongo() 

, 당신은 restful.Apirepresentation for application/json can be overridden (이 반환 값 일치 IMO를 만들기 때문에 그리 좋은 생각!) 코드에서 훨씬 나중에 JSON 변환을 처리하기 위해 같은 것입니다 경우.

from mongoengine.base.document import BaseDocument 

... 

@api.representation('application/json') 
def output_json(data, code, headers=None): 
    if isinstance(data, BaseDocument) 
     dump = json.dumps(data.to_mongo()) 
    else: 
     dump = json.dumps(data) 

    resp = make_response(dump, code) 
    resp.headers.extend(headers or {})