Моя цель - определить RESTful API, используя CherryPy (wsgi) + uWSGI + Nginx.Мне интересно, как обрабатывать метод OPTIONS, как мне было предложено на #python.Мне посоветовали, что реализация обработчика этого метода поможет вызывающим объектам моего API понять, какие методы поддерживаются, а какие нет.
Вот что у меня так далеко:
#!/usr/bin/env python
import cherrypy
# modules used for data access
import nosql
import dao
class Product(object):
exposed = True
def GET(self, key, *args, **kwargs):
try:
p = Product(nosql.get(key))
return p.json
except:
# return 500 error with traceback if debug
pass
def POST(self, *args, **kwargs):
try:
p = dao.Product(*args, **kwargs)
k = nosql.generate_key(Product.__name__)
nosql.set(k,str(p))
except:
# return 500 error with traceback if debug
pass
def OPTIONS(self, *args, **kwargs):
"""
The question is, what to return here? I'm looking
at the following rfc:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
"""
return "GET, POST"
conf = {
'/': {
'request.dispatch':cherrypy.dispatch.MethodDispatcher(),
},
}
application = cherrypy.tree.mount(Product, config=conf)