0

JSON 形式で日付フィールドを返す API を作成できません。そのため、シリアル化する関数を作成する必要がありました。dump_datetime 関数がそれを行います。私の問題は、GET Resource リクエストをスローするたびにリソース呼び出しで dump_datetime 呼び出しを実行する方法がわからないことです。

「生年月日」属性を持つリソース ユーザーがあるとします。「生年月日」属性を作成して dump_datetime() 関数を通過させるにはどうすればよいですか?

Since in Eve you could already get the item call by  http://127.0.0.1:5000/users/id

get 呼び出しが dump_datetime を通過するように設定するにはどうすればよいですか?

私の質問は明確ですか?

以下は、私が作成したデシリアライズ関数を使用したカスタム関数の例です。イブのアイテムとリソースの呼び出しで機能させる方法を知りたいだけです。

email = db.Column(db.String(120), unique=True)
def dump_datetime(value):
    """Deserialize datetime object into string form for JSON processing."""
    if value is None:
        return None
    return value.strftime("%Y-%m-%d")

@app.route('/test', methods=['GET'])
def test_mail():
  bdate = datetime.datetime.strptime( '19900914', "%Y%m%d").date()
  b = dump_datetime(bdate)
  return jsonify(results = b)

更新: /var/www/healthyoptions-middleware/eve/methods/get.py ファイルを編集し、シリアル化が必要な属性に対してシリアル化関数を実行する必要があります?????

4

1 に答える 1

0

あなたが何を求めているのか理解できれば、必要なのはイベントフックを使用することだけです。GET メソッドのリクエスト後のフックと必要なリソースでうまくいくはずです。例えばon_post_GET_<resource_name> = deserializing_function。または、on_fetched_resource_ などのデータベース リクエストをフックすることもできます。

ドキュメントから:

GET、POST、PATCH、PUT、DELETE メソッドが実行されると、on_post_ および on_post__ イベントの両方が発生します。複数のコールバック関数を使用して、これらのイベントをサブスクライブできます。コールバックは、アクセスされたリソース、元のflask.requestオブジェクト、および応答ペイロードを受け取ります。

データベース イベント フックは、要求イベント フックのように機能します。これらのイベントは、データベース アクションの前後に発生します。

http://python-eve.org/features.html#event-hooks

于 2014-10-14T17:35:57.657 に答える