簡體   English   中英

如何在Flask API中返回一個通用的JSON對象?

[英]How can I return a common JSON object in my flask API?

我正在構建一個返回JSON字符串的API。 但是,我的目標是為結果提供一個通用包裝,其中包含有關返回結果以及返回結果的各種元數據屬性。

  • 結果總數(我不允許用戶一次查詢1000多個查詢,因此他們需要知道是否還有更多查詢,以便他們可以請求下一組結果)
  • 節氣門時間(告訴用戶在下一個請求之前回退一段時間-如果API繁忙則很有用)
  • 錯誤代碼/信息
  • 數據用戶要求

我的JSON對象如下所示:

{
    'total_results': 1001,
    'throttle': 0,
    'error_cd': 0,
    'message': 'Successful',
    'results': [
        # Data that is returned; Each end point can return a different "type"
        ]
}

目的是讓我的端點簡單地返回results中顯示的數據(甚至不是JSON格式)。 我的問題是我該如何提供包裝器?

我最初的想法是運行jsonify某種裝飾器,但是裝飾器可以在函數之后運行嗎? IE瀏覽器 我可以在路線中運行代碼,然后運行裝飾器代碼嗎?

只編寫包裝函數呢? 我可能會做類似的事情:

 @app.route('/api/blah/')
 def my_route():
     results = calculate_my_results()
     return jsonify(format_api_result(results))

 def format_api_result(data):
     # add in your extra metadata here, return a dictionary

在我看來,功能似乎是最簡單,最靈活的操作方式。 這是一些額外的代碼,但是是一個裝飾器。 盡管您當然可以在裝飾器中完成此操作,但是我認為除了復雜性之外,它在這里沒有增加太多其他功能。

如果您確實想使用裝飾器路線,請查看以下內容:

http://www.jeffknupp.com/blog/2013/11/29/improve-your-python-decorators-explained/

很好地解釋了裝飾器如何工作以及如何在調用包裝函數時精確控制。

如果我誤解了您要做什么,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM