{"id":410,"date":"2012-08-15T23:42:14","date_gmt":"2012-08-15T15:42:14","guid":{"rendered":"https:\/\/www.whitetrefoil.com\/blog\/?p=410"},"modified":"2012-08-15T23:42:14","modified_gmt":"2012-08-15T15:42:14","slug":"use-restful-in-sinatra","status":"publish","type":"post","link":"https:\/\/www.whitetrefoil.com\/blog\/?p=410","title":{"rendered":"\u5728 Sinatra \u4e2d\u4f7f\u7528 RESTful"},"content":{"rendered":"<p>\u6700\u8fd1\u5728\u5b66\u4e60Sinatra\u3002\u4eca\u5929\u9047\u5230\u4e86\u5173\u4e8eRESTful\u7684\u95ee\u9898\uff0c\u7528\u8fc7Rails\u7684\u5404\u4f4d\u5e94\u8be5\u90fd\u5bf9\u8fd9\u4e2a\u4e0d\u964c\u751f\u4e86\uff0c\u4e0d\u8fc7\u91cd\u91cf\u7ea7\u7684Rails\u6709\u5185\u7f6ehelper\u5e2e\u6211\u4eec\u5728\u6a21\u677f\u91cc\u751f\u6210\u90a3\u4e9b\u4e1c\u897f\uff0c\u8f7b\u91cf\u7ea7\u7684Sinatra\u53ef\u4e0d\u4f1a\uff0c\u6211\u4eec\u8981\u81ea\u5df1\u52a8\u624b\u3002<\/p>\n<p>\u4eff\u7167Rails\uff0c\u5728views\u6a21\u677f\u4e2d\u52a0\u5165\u4e86 <code lang=\"html\">&lt;input type=\"hidden\" name=\"_method\" value=\"put\"&gt;<\/code> \uff0c\u7136\u540esubmit\u4e00\u4e0b\u8bd5\u8bd5\uff0c\u7136\u540e\u53d1\u73b0\u8fd8\u662f\u88ab\u5224\u65ad\u4e3a\u4e00\u4e2apost\u8bf7\u6c42\u2026\u2026<\/p>\n<p>\u4e0a\u7f51\u67e5\u4e86\u8d44\u6599\uff0c\u8bf4\u662f\u5982\u679c\u7528\u7684\u662fModular\u98ce\u683c\u7684\u8bdd\uff0c\u5fc5\u987b\u81ea\u5df1\u52a8\u624b\u52a0\u5165 <code lang=\"ruby\">use Rack::MethodOverride<\/code> \u3002\u8bd5\u4e86\u4e0b\uff0c\u679c\u7136\u53ef\u4ee5\u3002<\/p>\n<p>\u4f46\u662f\u53c8\u89c9\u5f97\u8fd9\u4e2a\u65b9\u6cd5\u592a\u50bb\u4e86\u4e00\u70b9\uff0c\u4e8e\u662f\u53c8\u5728Sinatra\u5b98\u7f51\u4ed4\u7ec6\u6643\u4e86\u4e00\u5708\uff0c\u53d1\u73b0\u539f\u6765settings\u91cc\u6709\u8fd9\u4e00\u9879 <code lang=\"ruby\">:method_override<\/code> \uff0c\u52a0\u5165\u4ee3\u7801\uff0c\u641e\u5b9a\u3002<\/p>\n<p>app.rb:<br \/>\n<code><\/p>\n<pre lang=\"ruby\"># encoding: utf-8\nrequire \"sinatra\/base\"\nrequire \"sinatra\/contrib\"\nrequire \"slim\"\n\nclass RestTry < Sinatra::Base\n  set :method_override => true\n  register Sinatra::Contrib\n\n  route :get, \"\/\" do\n    slim :rest, :locals => { :method => request.request_method }\n  end\n\n  run!\nend<\/pre>\n<p><\/code><\/p>\n<p>rest.slim :<br \/>\n<code><\/p>\n<pre lang=\"ruby\">doctype 5\nhtml\n  head\n    meta charset=\"utf-8\"\n    title Sinatra REST Trying\n  body\n    p Method: #{method}\n    section#get\n      form action=\".\" method=\"get\"\n        input type=\"submit\" value=\"GET\"\n    section#post\n      form action=\".\" method=\"post\"\n        input type=\"submit\" value=\"POST\"\n    section#put\n      form action=\".\" method=\"post\"\n        input type=\"hidden\" name=\"_method\" value=\"put\"\n        input type=\"submit\" value=\"PUT\"\n    section#patch\n      form action=\".\" method=\"post\"\n        input type=\"submit\" value=\"PATCH\"\n    section#delete\n      form action=\".\" method=\"post\"\n        input type=\"submit\" value=\"DELETE\"\n    section#options\n      form action=\".\" method=\"post\"\n        input type=\"submit\" value=\"OPTIONS\"\n    section#custom\n      form action=\".\" method=\"post\"\n        input type=\"submit\" value=\"CUSTOM\"\n<\/pre>\n<p><\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6700\u8fd1\u5728\u5b66\u4e60Sinatra\u3002\u4eca\u5929\u9047\u5230\u4e86\u5173\u4e8eRESTful\u7684\u95ee\u9898\uff0c\u7528\u8fc7Rails\u7684\u5404\u4f4d\u5e94\u8be5\u90fd\u5bf9\u8fd9\u4e2a\u4e0d\u964c\u751f\u4e86\uff0c\u4e0d\u8fc7\u91cd &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[10],"tags":[],"_links":{"self":[{"href":"https:\/\/www.whitetrefoil.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/410"}],"collection":[{"href":"https:\/\/www.whitetrefoil.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.whitetrefoil.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.whitetrefoil.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.whitetrefoil.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=410"}],"version-history":[{"count":0,"href":"https:\/\/www.whitetrefoil.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/410\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.whitetrefoil.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=410"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.whitetrefoil.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=410"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.whitetrefoil.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}