<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>myRuby.net: &#50668;&#47084;&#44032;&#51648; &#52968;&#53584;&#52768; &#54805;&#49885;(Contents Type)&#51012; &#54620; &#44275;&#50640;&#49436; &#52376;&#47532;&#54620;&#45796;</title>
    <link>http://myruby.net/articles/2007/07/15/%EC%97%AC%EB%9F%AC%EA%B0%80%EC%A7%80-%EC%BB%A8%ED%85%90%EC%B8%A0-%ED%98%95%EC%8B%9D-contents-type-%EC%9D%84-%ED%95%9C-%EA%B3%B3%EC%97%90%EC%84%9C-%EC%B2%98%EB%A6%AC%ED%95%9C%EB%8B%A4</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Blog.authored_by :deepblue</description>
    <item>
      <title>&#50668;&#47084;&#44032;&#51648; &#52968;&#53584;&#52768; &#54805;&#49885;(Contents Type)&#51012; &#54620; &#44275;&#50640;&#49436; &#52376;&#47532;&#54620;&#45796;</title>
      <description>&lt;p&gt;&#47112;&#51068;&#49828;&#47196; &#44060;&#48156;&#54620; &#50528;&#54540;&#47532;&#52992;&#51060;&#49496;&#51032; &#52968;&#53944;&#47204;&#47084; &#53076;&#46300;&#47484; &#48372;&#47732; &#50500;&#47000;&#50752; &#44057;&#51008; &#54805;&#49885;&#51032; &#49548;&#49828;&#47484; &#49789;&#44172; &#52286;&#51012; &#49688; &#51080;&#45796;.&lt;/p&gt;

&lt;p&gt;&lt;br class="khtml-block-placeholder" /&gt;&lt;/p&gt;

&lt;ol class="code"&gt;
&lt;li&gt;respond_to do |format|&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;format.html { render :template =&amp;gt; &amp;#8216;some&amp;#8217; }&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;format.xml &amp;nbsp;{ render :xml =&amp;gt; @obj }&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;format.json { render :json =&amp;gt; @obj.to_json&amp;nbsp;}&lt;/li&gt;
&lt;li&gt;end&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;br class="khtml-block-placeholder" /&gt;&lt;/p&gt;

&lt;p&gt;&#50948; &#53076;&#46300;&#45716; &#54616;&#45208;&#51032; &#50529;&#49496; &#53076;&#46300;&#47196; &#50668;&#47084;&#44032;&#51648; &#52968;&#53584;&#52768; &#54805;&#49885;&#51012; &#52376;&#47532;&#54616;&#44256; &#51080;&#45796;. &#49324;&#50857;&#51088;&#44032; XML &#54805;&#49885;&#51012; &#50896;&#54616;&#47732;(HTTP &#50836;&#52397;&#50640; Accept-Type&#51004;&#47196; &#45812;&#50500;&#48372;&#45236;&#44144;&#45208;, format &#54028;&#46972;&#47700;&#53552;&#50640; xml&#51012; &#45347;&#50612;&#49436; &#48372;&#45236;&#44144;&#45208;)&amp;nbsp;&#51060;&#47484; &#44048;&#51648;&#54644;&amp;nbsp;&#51025;&#45813;&#51012; XML &#54805;&#49885;&#51004;&#47196; &#48372;&#45236;&#45716; &#49885;&#51060;&#45796;.&amp;nbsp;&#51339;&#44256; &#45208;&#49256;&#51032; &#45436;&#51137;&#51008; &#51217;&#50612;&#46160;&#44256;, &#50612;&#51724;&#46304; &#54788;&#51116;&#51032; &#47112;&#51068;&#49828; &#49828;&#53440;&#51068;&#47196; &#51088;&#47532;&#51105;&#51008; &#53076;&#46300;&#51060;&#45796;.&lt;/p&gt;

&lt;p&gt;&lt;br class="khtml-block-placeholder" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img class="attachment" title="rails_responder.png" src="http://deepblue.springnote.com/pages/367604/attachments/152210" alt="rails_responder.png" /&gt;&lt;br class="khtml-block-placeholder" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br class="khtml-block-placeholder" /&gt;&lt;/p&gt;

&lt;p&gt;&#49828;&#54532;&#47553;&#45432;&#53944;&#50640;&#49436;&#45716; &#52968;&#53944;&#47204;&#47084; &#47700;&#49436;&#46300; &#45824;&#48512;&#48516;&#50640;&#49436; HTML, XML, JSON &#52636;&#47141;&#51012; &#54616;&#44256; &#51080;&#45796;. &#44536;&#47532;&#44256; &#51068;&#48512; &#47700;&#49436;&#46300;&#50640;&#49436; Ajax &#54840;&#52636;&#50640;&#49436; &#49324;&#50857;&#54624; &#50857;&#46020;&#47196; JS&#47484; &#51648;&#50896;&#54620;&#45796;. &#53076;&#46300; &#51473;&#48373;&#51012; &#54588;&#54616;&#44592; &#50948;&#54644; RenderResult&#46972;&#45716; &#51068;&#51333;&#51032; Presenter &#47784;&#46280;&#51012;&amp;nbsp;&#46020;&#51077;&#54616;&#44256; &#51080;&#44592;&#45716; &#54620;&#45936;, &#51060;&#45716; &#45796;&#51020;&#50640; &#45796;&#47336;&#44592;&#47196; &#54616;&#51088;.&lt;/p&gt;

&lt;p&gt;&lt;br class="khtml-block-placeholder" /&gt;&lt;/p&gt;

&lt;p&gt;&#50668;&#47084;&#44032;&#51648; &#52968;&#53584;&#52768; &#54805;&#49885;&#51012; &#52376;&#47532;&#54644;&#50556;&#54616;&#45716; &#44275;&#51008; &#44845; &#51025;&#45813; &#47928;&#49436;&#47484; &#47564;&#46308;&amp;nbsp;&#46412;&#47564;&#51008; &#50500;&#45768;&#45796;. &#50836;&#52397; &#54805;&#49885;&#46020; &#50668;&#47084;&#44032;&#51648;&#51068; &#49688; &#51080;&#45796;. &#50696;&#47484; &#46308;&#50612; &#54168;&#51060;&#51648; &#47532;&#49548;&#49828;&#47484; POST(&#47112;&#51068;&#49828; &#50857;&#50612;&#47196;&#45716; create)&#54624; &#46412;&#45716; &#51068;&#48152;&#51201;&#51064; HTTP &#54028;&#46972;&#47700;&#53552;&amp;nbsp;&#54805;&#49885;(page[name]=name&amp;amp;page[content]=conent)&#51012;&amp;nbsp;&#49324;&#50857;&#54624;&amp;nbsp;&#49688;&#46020; &#51080;&#51648;&#47564;, XML&#51060;&#45208; JSON&#51012; &#51649;&#51217; &#48372;&#45244; &#49688;&#46020; &#51080;&#45796;. &#51060;&#47484; &#49324;&#50857;&#51088; &#49440;&#53469;&#50640; &#47585;&#44592;&#46020; &#49436;&#48260;&#50640;&#49436;&amp;nbsp;&#51096; &#52376;&#47532;&#54624; &#49688; &#51080;&#45796;&#47732; &#48372;&#45796; &#50976;&#50672;&#54620; REST &#49436;&#48708;&#49828;&#44032; &#46112; &#49688; &#51080;&#45796;.&lt;/p&gt;

&lt;p&gt;&lt;br class="khtml-block-placeholder" /&gt;&lt;/p&gt;

&lt;p&gt;&#44536;&#47000;&#49436; &#49828;&#54532;&#47553;&#45432;&#53944;&#50640;&#49436;&#45716; &#45796;&#51020;&#44284; &#44057;&#51060; API &#50836;&#52397; &#54028;&#46972;&#47700;&#53552;&#47484; &#52376;&#47532;&#54616;&#45716; &#44508;&#52825;&#51012; &#51221;&#54664;&#45796;.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;XML &#47928;&#49436;&#47484; xml &#54028;&#46972;&#47700;&#53552;&#50640; &#45813;&#50500;&#49436; &#48372;&#45244; &#49688; &#51080;&#45796;.&lt;/li&gt;
&lt;li&gt;JSON &#47928;&#49436;&#47484; json &#54028;&#46972;&#47700;&#53552;&#50640; &#45812;&#50500;&#49436; &#48372;&#45244; &#49688; &#51080;&#45796;.&lt;/li&gt;
&lt;li&gt;HTTP&amp;nbsp;&#50836;&#52397;&#51032; Content Type&#51060; &amp;#8216;application/xml&amp;#8217;&#51060;&#46972;&#47732; RAW_POST_DATA&#50640; XML &#47928;&#49436;&#44032; &#45812;&#44596; &#44163;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;HTTP &#50836;&#52397;&#51032; Content Type&#51060; &amp;#8216;application/json&amp;#8217;&#51060;&#46972;&#47732; RAW_POST_DATA&#50640; JSON &#47928;&#49436;&#44032; &#45812;&#44596; &#44163;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;&#44536; &#50808;&#50640;&#45716; &#51068;&#48152;&#51201;&#51064; &#54028;&#46972;&#47700;&#53552; &#54805;&#49885;&#51012; &#46384;&#47480;&#45796;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&#51060;&#50752; &#44057;&#51008; &#44508;&#52825;&#51004;&#47196; &#51025;&#45812;&#51012; &#52376;&#47532;&#54616;&#44592; &#50948;&#54620; &#53076;&#46300;&#51060;&#45796;.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;ol class="code"&gt;
&lt;li&gt;
&lt;p&gt;def api_param&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;if &amp;nbsp; &amp;nbsp;params[:xml] &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; then Hash.from_xml(params[:xml])&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;elsif params[:json] &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;then JsonDecoder.parse(params[:json])&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;elsif request.content_type == &amp;#8220;application/xml&amp;#8221; &amp;nbsp;then Hash.from_xml(request.raw_post)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;elsif request.content_type == &amp;#8220;application/json&amp;#8221; then JsonDecoder.parse(request.raw_post)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;else &amp;nbsp;params&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;end&lt;/p&gt;
&lt;p&gt;rescue&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;raise BadRequest&lt;/p&gt;
&lt;p&gt;end&lt;/p&gt;
&lt;p&gt;once :api_param&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;br class="khtml-block-placeholder" /&gt;&lt;/p&gt;

&lt;p style="margin-left: 1em;"&gt;Hash.from_xml&#51008; XML&#51012; &#54028;&#49905;&#54644;&#49436; &#54644;&#49884; &#44396;&#51312;&#47484; &#47564;&#46308;&#50612;&#51456;&#45796;. JsonDecoder&#45716; &#51649;&#51217; &#47564;&#46304; &#44163;&#51004;&#47196; &#45236;&#48512;&#51201;&#51004;&#47196; ActiveSupport::JSON &#47784;&#46280;&#51012; &#54876;&#50857;&#54616;&#44256; &#51080;&#45796;. &#44536;&#47532;&#44256; &#54841;&#49884; &#51060; &#44284;&#51221;&#50640;&#49436; &#50696;&#50808;&#44032; &#48156;&#49373;&#54620;&#45796;&#47732;, &#49324;&#50857;&#51088; &#50836;&#52397;&#50640; &#47928;&#51228;&#44032; &#51080;&#45716; &#44163;&#51004;&#47196; &#48372;&#44256; BadRequest &#50696;&#50808;&#47484; &#48156;&#49373;&#49884;&#53416;&#45796;(&#44536;&#47084;&#47732; &#50696;&#50808; &#52376;&#47532; &#47784;&#46280;&#51060; &#51060; &#50696;&#50808;&#47484; &#48155;&#50500;&#49436; 400 &#50640;&#47084; &#54168;&#51060;&#51648;&#47484; &#47116;&#45908;&#47553; &#54624; &#44163;&#51060;&#45796;).&lt;/p&gt;

&lt;p style="margin-left: 1em;"&gt;&lt;/p&gt;

&lt;p style="margin-left: 1em;"&gt;&#51060;&#51228; &#49324;&#50857;&#51088;&#44032; &#48372;&#45240; &#44061;&#52404;&#50640; &#51217;&#44540;&#54616;&#44592; &#50948;&#54644;&#49436;&amp;nbsp;params&#47484; &#51649;&#51217; &#54840;&#52636;&#54616;&#45716; &#45824;&#49888;&amp;nbsp;api_param&#51012; &#49324;&#50857;&#54616;&#47732; &#46108;&#45796;.&lt;/p&gt;

&lt;p&gt;&lt;br class="khtml-block-placeholder" /&gt;&lt;/p&gt;

&lt;ol class="code"&gt;
&lt;li&gt;def create&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;@page =&amp;nbsp;Page.create api_param[&amp;#8216;page&amp;#8217;]&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;render :xml =&amp;gt; @page&lt;/li&gt;
&lt;li&gt;end&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;br class="khtml-block-placeholder" /&gt;&lt;/p&gt;

&lt;p&gt;&#51060;&#47111;&#44172; &#54632;&#51004;&#47196;&#50024; &#50528;&#54540;&#47532;&#52992;&#51060;&#49496; &#51204;&#48152;&#50640; &#51068;&#44288;&#46108; &#54028;&#46972;&#47700;&#53552; &#44508;&#52825;&#51012; &#44054;&#44172; &#54624; &#49688; &#51080;&#44256;, &#53076;&#46300; &#51473;&#48373;&#46020; &#54588;&#54624; &#49688; &#51080;&#45796;. &#47564;&#49464;!&lt;/p&gt;

&lt;p&gt;&lt;br class="khtml-block-placeholder" /&gt;&lt;/p&gt;

&lt;p align="right"&gt;&#51060; &#44544;&#51008; &lt;a href="http://deepblue.springnote.com/pages/367604"&gt;&#49828;&#54532;&#47553;&#45432;&#53944;&lt;/a&gt;&#50640;&#49436; &#51089;&#49457;&#46104;&#50632;&#49845;&#45768;&#45796;.&lt;/p&gt;</description>
      <pubDate>Sun, 15 Jul 2007 17:38:11 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:82447c8f-e010-4670-8878-ead997335f03</guid>
      <author>deepblue</author>
      <link>http://myruby.net/articles/2007/07/15/%EC%97%AC%EB%9F%AC%EA%B0%80%EC%A7%80-%EC%BB%A8%ED%85%90%EC%B8%A0-%ED%98%95%EC%8B%9D-contents-type-%EC%9D%84-%ED%95%9C-%EA%B3%B3%EC%97%90%EC%84%9C-%EC%B2%98%EB%A6%AC%ED%95%9C%EB%8B%A4</link>
      <category>development</category>
    </item>
  </channel>
</rss>
