webpy: 如何提供JSON服务

22 投票
2 回答
20875 浏览
提问于 2025-04-16 02:58

请问可以用webpy来提供JSON数据吗?我搭建了我的网站,需要把一些信息以JSON格式提供出来,以便与某些页面上的JavaScript进行交互。

我试着在文档里找答案,但没能找到相关内容。

谢谢,Giovanni

2 个回答

-6

用webpy提供JSON数据是完全可以的。不过如果你在选择框架的话,我建议你看看starlight和我修改过的版本twilight(可以参考文档)。

它有一个JSON包装器,可以帮你修正JSON响应的HTTP头信息。

它使用json或者simplejson库来处理JSON,进行对象之间的转换。

我现在正在使用这个框架,感觉非常不错。

https://bitbucket.org/marchon/twilight

里面有一个叫ShowMeTheJson.py的例子,使用了simplejson。

from starlight import *
from werkzeug.routing import Map
from werkzeug.routing import RuleFactory

import simplejson


class ShowMeTheResponses(App):

####################################################################
#
#   Sample URLS to Test Responses 
#
#   http://localhost:8080/                root
#
#   http://localhost:8080/json            return JSON Mime Type Doc  
#
###################################################################



   @default
   def hello(self):
       return 'Hello, world!'

   @dispatch('/')
   def index(self): 
       return 'Hello Root!'

   @dispatch('/html')
   def indexhtml(self): 
       return HTML('Hello HTML')

   @dispatch('/json')
   def indexjson(self):
       directions = {'N' : 'North', 'S' : 'South', 'E':'East', 'W' : 'West'}
       return JSON(simplejson.dumps(directions))         


if __name__ == '__main__':
    from werkzeug import run_simple
    run_simple('localhost', 8080, ShowMeTheResponses())
62

我觉得用web.py来提供JSON数据并不需要做什么特别复杂的事情。

import web
import json

class index:
    def GET(self):
        pyDict = {'one':1,'two':2}
        web.header('Content-Type', 'application/json')
        return json.dumps(pyDict)

撰写回答