使用virtualenv坏境
没有的话安装下
pip install virtualenv
启用virtualenv环境,安装pecan
$ virtualenv pecanrest-proj
$ cd pecanrest-proj
$ source bin/activate
$ pip install pecan
$ pecan create pecanrest
$ cd pecanrest
$ python setup.py develop
也可以手工创建pecanrest项目,及其文件结构,但是方便演示,还是通过pecan create自动创建
启动pecan
$ pecan serve config.py
应该会看到以下信息
Starting server in PID 14821
serving on 0.0.0.0:8080, view at http://127.0.0.1:8080
访问127.0.0.1:8080会看到如下
终止的话 CTRL+C
json格式输出
$ cd pecanrest/controllers/
$ vim root.py
添加如下内容:
from pecanrest.controllers import v1
class RootController(object):
v1 = v1.VersionController()
另外创建v1.py
import pecan
from pecan import rest
class VersionController(rest.RestController):
@pecan.expose('json')
def get(self):
return {"version": "1.0.0"}
现在启动pecan
$ cd ../..
$ pecan serve config.py
访问http://localhost:8080/v1
将会看到返回{"version": "1.0.0"}
真正的REST API, GET/POST/PUT/DELETE.
$ cd pecanrest/controllers/
$ mkdir api
$ cd api
创建以下文件
rw-r--r-- 1 root root 113 Aug 1 16:26 api.py
rw-r--r-- 1 root root 0 Aug 1 16:25 __init__.py
rw-r--r-- 1 root root 703 Aug 1 16:26 order.py
api.py
from pecanrest.controllers.api import order
class ApiController(object):
orders = order.OrdersController()
order.py
import pecan
from pecan import rest, response
class OrdersController(rest.RestController):
@pecan.expose("json")
def get(self):
return {
"100A": "1 bag of corn",
"293F": "2 bags of potatoes",
"207B": "1 bag of carrots"
}
@pecan.expose()
def post(self):
# TODO: Create a new order, (optional) return some status data
response.status = 201
return
@pecan.expose()
def put(self):
# TODO: Idempotent PUT (return 200 or 204)
response.status = 204
return
@pecan.expose()
def delete(self):
# TODO: Idempotent DELETE
response.status = 200
return
修改root.py
from pecanrest.controllers.api import api
class RootController(object):
api = api.ApiController()
启动pecan, 访问 http://127.0.0.1:8080/api/orders
将会看到调用了get方法