OpenResty::CheatSheet - Cheat sheet for OpenResty
This 'cheat sheet' is a handy reference, meant for beginning OpenResty users. Not everything is mentioned, but most of the common features in OpenResty::Spec::REST may already be included.
Note that in the following small examples the plain password passing on the URL is merely a hack in the currrent implementation (just for my development convenience). It is supposed to be encrypted on the client side first (with a random salt obtained from the OpenResty server) and all go through SSL in the real thing.
GET /=/login/agentzh.Admin/password Login as account "agentzh" and role "Admin" using encrypted password "password" DELETE /=/view/Blah?user=agentzh.Admin&password=password
GET /=/model Read model list DELETE /=/model Delete all models
GET /=/model/MyModel Read the info for MyModel POST /=/model/MyModel Create a model MyModel { description:"Model description", columns:[ { name:"title",label:"Title", type:"text",default:"No title", required:1 }, { name:"gender",label:"Gender", values:['M','F'] }, ... ] } PUT /=/model/MyModel Alter the model MyModel { name:"NewName",description:"New Description" } DELETE /=/model/MyModel Delete model MyModel
GET /=/model/MyModel/mycol Read the info for MyModel's mycol POST /=/model/MyModel/mycol Add a new column named mycol { label:"My column",type:"integer",default:0 } PUT /=/model/MyModel/mycol Alter the column mycol { name:"new_name", type:"real" } DELETE /=/model/MyModel/mycol Remove column mycol
GET /=/model/MyModel/id/3 Read the row with id 3 POST /=/model/MyModel/~/~ Insert new rows [ { col1:"", col2:"", ... }, ... ] POST /=/model/MyModel/~/~ Insert a single new row { col1:"", col2:"", ... } PUT /=/model/MyModel/id/2 Update the row with id 2 { col1:"", col2:"", ... } DELETE /=/model/MyModel/id/2 Delete the row with id 2 DELETE /=/model/MyModel/~/~ Delete all the rows
GET /=/model/MyModel/~/~?order_by=col1 order by col1 GET /=/model/MyModel/~/~?order_by=col1,col2 order by col1, col2 GET /=/model/MyModel/~/~?order_by=col1:asc,col2:desc order by col1 asc, col2 desc GET /=/model/MyModel/~/~?offset=10&count=20 offset 10 limit 20
GET /=/view Get a list of all the views available DELETE /=/view Delete all the views
POST /=/view/MyView Create a new view named MyView which { description:"My view", takes the parameters "table" and "min" definition: "select * from Post, $table where Post.id >= $min" } GET /=/view/MyView View the definition of the view MyView PUT /=/view/MyView Update the information of MyView { name:"NewName", description:"New desc" } DELETE /=/view/NewName Remove the NewName view
GET /=/view/MyView/~/~?table=Comment&min=100 # assuming the PostsByMonth view has 2 parameters, "year" and "month" GET /=/view/PostsByMonth/~/~?year=2008&month=3? GET /=/view/PostsByMonth/year/2008?month=3 GET /=/view/PostsByMonth/month/3?year=2008
Note: Actions have not yet been implemented.
GET /=/action Get the list of all the existing actions DELETE /=/action Remove all the actions (except built-in ones)
POST /=/action/PostComment Create an action for posting { description:"Post a comment", new comments definition:" POST /=/model/Comment/~/~ { author: $author, content: $content, post: $post } update Post set comments=comments+1 where post = $post" } PUT /=/action/PostComment Update an existing action { name:"SendComment", description:"Send a comment" }
POST /=/action/PostComment/~/~ Invoke the PostComment action { author:"agentzh", defined above content:"Good post!", post:125 }
GET /=/view/PostsByMonth/~/~?callback=foo Returns "foo(<JSON>);" instead of "<JSON>" GET /=/view/PostsByMonth/~/~?var=foo Returns "foo=<JSON>;" instead of "<JSON>" GET /=/view/Blah?user=agentzh.Public Per-request-login GET /=/view/Blah?session=23EC98F2-F1A... Specify the session
GET /=/model.json Get model list in JSON format (the default) GET /=/model.yaml ditto, but in YAML format GET /=/model.yml .yml is an alias for .yaml
GET /=/role Get the role list DELETE /=/role Delete all roles (except built-in ones)
GET /=/role/MyRole Get the info for the "MyRole" role POST /=/role/Reader Create an anoymous role named "Reader" { description:"My Role", login:"anonymous" } POST /=/role/Poster Create a "Poster" role { description:"Article Poster", which can ony login:"password", login via passwords password:"encrypted password" }
GET /=/role/MyRole/~/~ Get all the ACL rules for MyRole GET /=/role/MyRole/method/GET Filter out ACL rules with GET method only POST /=/role/MyRole/~/~ Allow MyRole to insert new rows into { method:"POST", "/=/model/Post" } the Post model PUT /=/role/MyRole/id/5 Modify the ACL rule with id 5 { method:"PUT" } DELETE /=/role/MyRole/method/DELETE Banned delete operations from MyRole DELETE /=/role/MyRole/~/~ Delete all the ACL rules for MyRole
POST /=/feed/Post, Create a feed named "Post" using the { "description":"My feed", RecentPosts view "author":"Me","copyright":"", "language":"en","title":"Craps", "view":"RecentPosts", "link":"http://blog.foo.com", "logo":"http://foo.com/me.jpg", } GET /=/feed/Post Read info for the Post feed back PUT /=/feed/Post Update attributes of the Post feed {"author":"New author", "link":"http://new.home"} GET /=/feed/Post/~/~ Get the RSS 2.0 feed in XML DELETE /=/feed/Post Remove the Post feed DELETE /=/feed Remove all the feeds
POST /=/role/Commenter Create a CommentPoster role { description:"Comment Poster", login:"captcha" } POST /=/role/Comment/~/~ Assign some permissions to it { method:"POST", url:"/=/model/Comment/~/~" }
GET /=/captcha/id Get a captcha ID GET /=/captcha/id/<ID> Get the captcha image POST /=/model/Comment/~/~?user=account.Commenter&captcha=<ID>:<solution> Use the captcha ID and solution to do the permitted action
Agent Zhang (agentzh) <agentzh at yahoo.cn>.
<agentzh at yahoo.cn>
OpenResty::Spec::REST, OpenResty.
To install OpenResty, copy and paste the appropriate command in to your terminal.
cpanm
cpanm OpenResty
CPAN shell
perl -MCPAN -e shell install OpenResty
For more information on module installation, please visit the detailed CPAN module installation guide.