2011-04-24 40 views
7

Tôi phát điên lên WSGI trên Google App Engine (GAE).WSGI - Đặt loại nội dung thành JSON

Làm cách nào để đặt loại nội dung thành JSON? Đây là những gì tôi có cho đến thời điểm này:

class Instructions(webapp.RequestHandler): 
    def get(self): 
     response = {} 
     response["message"] = "This is an instruction object" 

     self.response.out.write(json.dumps(response)) 



application = webapp.WSGIApplication([('/instructions', Instructions)], 
            debug=True) 

def main(): 
    run_wsgi_app(application) 

if __name__ == "__main__": 
    main() 

Ngoài ra, tôi đang xây dựng một vài dịch vụ RESTful, không có gì quá phức tạp. Tôi đã sử dụng Restlets khi tôi đang phát triển trong JAVA. Có một khuôn khổ tốt hơn để sử dụng hơn WSGI không? Lý do duy nhất tôi đang sử dụng WSGI là vì đó là những gì họ đã sử dụng trong hướng dẫn App Engine.

Cảm ơn!

+2

Bạn đang "điên xanh"? Tôi nghe không dễ. –

+0

Hey Nick, vì vậy tôi đã cố gắng viết cho bạn một lời cảm ơn bạn đã không trả lời một trong những câu hỏi mà tôi đã trả lời, nhưng trong cuộc đời tôi, tôi không thể tìm thấy địa chỉ e-mail của bạn –

Trả lời

14

Bạn có thể thiết lập thích hợp Content-Type với một cái gì đó như thế này:

self.response.headers['Content-Type'] = "application/json" 
self.response.out.write(json.dumps(response)) 

WSGI không phải là một khuôn khổ mà là một đặc điểm kỹ thuật; khuôn khổ bạn hiện đang sử dụng là khung công tác webapp.

Không có gì phức tạp và cụ thể như Restlet ở phía Python; tuy nhiên với webapp bạn có thể tạo ra RESTful request handlers thông qua các biểu thức chính quy trả về dữ liệu JSON/XML như trình xử lý của bạn.

+0

Thật tuyệt, cảm ơn trả lời câu hỏi của tôi về công cụ REST –

2

Giống như bất kỳ phản ứng HTTP, bạn có thể thêm hoặc chỉnh sửa tiêu đề:

def get(self): 
    response = {} 
    response["message"] = "This is an instruction object" 

    self.response.headers["Content-Type"] = "application/json" 
    self.response.out.write(json.dumps(response)) 

More đây: Redirects, Headers and Status Codes

1

Có một khuôn khổ tốt hơn để được sử dụng hơn WSGI?

Nhìn vào kim tự tháp (các giá treo trước đây có tên, nếu bạn thấy được đề cập). Nghe có vẻ như nó sẽ tốt hơn trong trường hợp của bạn vs django.

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