2013-03-15 31 views
5

Tôi đang cố gắng sử dụng Flask-Restless với Ember.js, điều này sẽ không tuyệt vời như vậy. Đó là câu trả lời GET đang vấp ngã tôi. Ví dụ, khi tôi làm một yêu cầu GET trên /api/people ví dụ Ember.js hy vọng:Sửa đổi phản hồi JSON của Flask-Restless

{ 
    people: [ 
     { id: 1, name: "Yehuda Katz" } 
    ] 
} 

Nhưng Flask-Restless phản ứng với:

{ 
    "total_pages": 1, 
    "objects": [ 
     { "id": 1, "name": "Yahuda Katz" } 
    ], 
    "num_results": 1, 
    "page": 1 
} 

Làm thế nào để thay đổi phản ứng Flask-Restless để phù hợp với những gì Ember.js muốn? Tôi có cảm giác này nó có thể là một chức năng hậu xử lý, nhưng tôi không chắc chắn làm thế nào để thực hiện nó.

+1

Sigh ... Tôi đã thử hỏi câu hỏi ngược và ai đó vừa nói rằng tôi nên thay đổi cách thức phản hồi Flask-Restless. TBH Tôi cảm thấy thoải mái hơn rất nhiều trong Python vì vậy làm theo cách này sẽ thu hút tôi. –

Trả lời

3

Câu trả lời được chấp nhận là chính xác vào thời điểm đó. Tuy nhiên, bài đăng và tiền xử lý hoạt động trong Flask-Restless đã thay đổi. According to the documentation:

Các preprocessors và postprocessors đối với từng loại yêu cầu chấp nhận lập luận khác nhau, nhưng không ai trong số họ có một giá trị trả về (hơn đặc biệt, bất kỳ giá trị trả về sẽ bị bỏ qua). Các bộ tiền xử lý và các bộ xử lý sau sửa đổi các đối số của chúng tại chỗ.

Vì vậy, bây giờ trong trình xử lý hậu kỳ của tôi, tôi chỉ xóa mọi khóa mà tôi không muốn. Ví dụ:

def api_post_get_many(result=None, **kw): 
    for key in result.keys(): 
     if key != 'objects': 
      del result[key] 
8

Tiện ích Flask có pretty readable source code. Bạn có thể thực hiện một bộ xử lý GET_MANY sau:

def pagination_remover(results): 
    return {'people': results['objects']} if 'page' in results else results 

manager.create_api(
    ..., 
    postprocessors={ 
     'GET_MANY': [pagination_remover] 
    } 
) 

Tôi chưa thử nghiệm, nhưng nó sẽ hoạt động.

+1

Tôi thực sự xấu hổ vì nó đơn giản, nhưng cảm ơn bạn rất nhiều. –

+0

Tôi đã thử nghiệm điều này và nó đã không. – bbaassssiiee

+2

@datasmid: Điều đó không hữu ích chút nào. – Blender

Các vấn đề liên quan