summaryrefslogtreecommitdiffstats
path: root/archives/extend/attachments/20131029/a9204600/attachment.html
blob: b69fae870cc2903f5917dbb65a57aa9fd4457052 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
<tt>
&lt;div&nbsp;dir=&quot;ltr&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;My&nbsp;situation&nbsp;is&nbsp;that&nbsp;I&nbsp;have&nbsp;a&nbsp;rest&nbsp;handler&nbsp;that&nbsp;may&nbsp;fail&nbsp;due&nbsp;to&nbsp;invalid&nbsp;url&nbsp;segments.�&nbsp;Example&nbsp;situation:&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;span&nbsp;style=&quot;font-family:courier&nbsp;new,monospace&quot;&gt;init(_Transport,&nbsp;_Req,&nbsp;_Opts)&nbsp;-&gt;&lt;br&gt;<br>
�������&nbsp;{upgrade,&nbsp;protocol,&nbsp;cowboy_rest}.&lt;br&gt;&lt;br&gt;content_types_provided(Req,&nbsp;State)&nbsp;-&gt;&lt;br&gt;���&nbsp;{[{&lt;&lt;&quot;application/json&quot;&gt;&gt;,&nbsp;get_json}],&nbsp;Req,&nbsp;State}.&lt;br&gt;&lt;br&gt;get_json(Req0,&nbsp;State)&nbsp;-&gt;&lt;br&gt;���&nbsp;{Params,&nbsp;Req1}&nbsp;=&nbsp;lists:mapfoldl(fun&nbsp;cowboy_req:binding/2,&nbsp;Req0,&nbsp;[param1,&nbsp;param2,&nbsp;param3,&nbsp;....]),&lt;br&gt;<br>
&lt;br&gt;���&nbsp;case&nbsp;catch&nbsp;other_module:request(Params)&nbsp;of&lt;br&gt;���&nbsp;���&nbsp;{&#39;EXIT&#39;,&nbsp;{badarg,&nbsp;_}}&nbsp;-&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&nbsp;style=&quot;font-family:courier&nbsp;new,monospace&quot;&gt;���&nbsp;���&nbsp;���&nbsp;hmmm,&nbsp;Params&nbsp;were&nbsp;bad&nbsp;and&nbsp;I&nbsp;would&nbsp;like&nbsp;to&nbsp;return&nbsp;a&nbsp;404&nbsp;code&nbsp;now.&lt;br&gt;<br>
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&nbsp;style=&quot;font-family:courier&nbsp;new,monospace&quot;&gt;��&nbsp;&nbsp;��&nbsp;Result&nbsp;-&gt;&lt;br&gt;���&nbsp;���&nbsp;���&nbsp;{jiffy:encode(Result),&nbsp;Req1,&nbsp;State}&lt;br&gt;���&nbsp;end.&lt;br&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;So&nbsp;I&nbsp;would&nbsp;like&nbsp;to&nbsp;return&nbsp;a&nbsp;404&nbsp;code&nbsp;when&nbsp;my&nbsp;underlying&nbsp;request&nbsp;function&nbsp;fails,&nbsp;but&nbsp;it&nbsp;appears&nbsp;my&nbsp;choices&nbsp;are:&lt;br&gt;<br>
&lt;/div&gt;&lt;div&gt;&lt;br&gt;-&nbsp;return&nbsp;a&nbsp;200&nbsp;(ok)&nbsp;response&nbsp;with&nbsp;data.&lt;br&gt;&lt;/div&gt;&lt;div&gt;-&nbsp;crash&nbsp;and&nbsp;cause&nbsp;a&nbsp;500&nbsp;(Internal&nbsp;Server&nbsp;Error)&nbsp;response&nbsp;to&nbsp;be&nbsp;returned.�&nbsp;Not&nbsp;exactly&nbsp;the&nbsp;sentiment&nbsp;I&nbsp;want.&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Is&nbsp;there&nbsp;some&nbsp;other&nbsp;way&nbsp;to&nbsp;cause&nbsp;a&nbsp;404&nbsp;response?&lt;br&gt;<br>
&lt;br&gt;&lt;/div&gt;&lt;div&gt;I&nbsp;realize&nbsp;I&nbsp;could&nbsp;add&nbsp;path&nbsp;constraint&nbsp;functions,&nbsp;but&nbsp;I&nbsp;will&nbsp;be&nbsp;replicating&nbsp;logic&nbsp;from&nbsp;my&nbsp;underlying&nbsp;request&nbsp;function.�&nbsp;Furthermore,&nbsp;the&nbsp;constraint&nbsp;functions&nbsp;consider&nbsp;parameters&nbsp;in&nbsp;isolation,&nbsp;so&nbsp;that&nbsp;won&#39;t&nbsp;work&nbsp;if&nbsp;the&nbsp;validity&nbsp;of&nbsp;parameters&nbsp;is&nbsp;coupled.&lt;br&gt;<br>
&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Thanks,&lt;br&gt;Dan.&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;<br>

</tt>