Моя цель - определить RESTful api, используя CherryPy (wsgi) + uWSGI + Nginx. Мне интересно, как обращаться с методом OPTIONS, как это было предложено мне на #python. Мне сообщили, что реализация обработчика этого метода поможет вызывающим абонентам в api понять, какие методы поддерживаются, а какие - нет.Как определить метод http OPTIONS в CherryPy?
Вот что у меня до сих пор:
#!/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)