Хорошо, вызовы AJAX должны получать данные с сервера где-нибудь. Если цель состоит в том, чтобы избежать сложной настройки на стороне сервера, CherryPy может сохранить код на стороне сервера ОЧЕНЬ маленьким.
Я написал простой пример ниже. Первый класс - это место, где вы размещаете логику для своего API ReST. Код ниже класса - это все, что вам нужно для запуска и запуска сервера.
Установите Python 2.6, сохраните приведенный ниже код в restExample.py. Затем в командной строке запустите файл python, выполнив «python restExample.py». Направьте ваш браузер на http://localhost:8080/blog/999 и увидите, как возвращается JSON.
import cherrypy
import json
# Create the controller
class Blog_Controller(object):
def get(self, entryID):
cherrypy.response.headers['Content-Type'] = 'application/json'
return json.dumps({'title':'Entry Title from DB', 'entry_text': 'Text From DB'})
def update(self, entryID, titleFromPOSTFormInput, textFromPOSTFormInput):
# Update DB with passed in arguments. entryID comes from URL,
# other two entries come from POST
cherrypy.response.headers['Content-Type'] = 'application/json'
return json.dumps({'success':True})
# Setup URL routes
d = cherrypy.dispatch.RoutesDispatcher()
d.connect(name='blog_entry', route='blog/:entryID', action='get',
controller=Blog_Controller(),
conditions={'method': ['GET']})
d.connect(name='blog_entry', route='blog/update/:entryID', action='update',
controller=Blog_Controller(),
conditions={'method': ['POST']})
config = { '/' : { 'request.dispatch': d } }
cherrypy.tree.mount(root=None, config=config)
# Start the webserver
engine = cherrypy.engine
try:
engine.start()
except:
sys.exit(1)
else:
engine.block()