现在有太多方法去mock,不过当还是要连接到远程服务器上测试真正的返回的时候,如果机器上没有跑node而且有php的话,用这货来临时mock一下,或许更轻松。
<br /><?php<br />/**<br /> * Mock Json for Javascript<br /> *<br /> * @author soulteary<br /> * @date 2014-06-15<br /> */<br /> <br /> <br />/**<br /> * 请求接口字段:字符集<br /> */<br />define('charset','charset');<br /> <br />/**<br /> * 请求接口字段:回调函数名<br /> */<br />define('callback','callback');<br /> <br />/**<br /> * 请求接口字段:跨域字段<br /> */<br />define('crossDomain','cross-domain');<br /> <br /> <br />/**<br /> * 输出mock数据<br /> * 如果存在mock.json文件,则数据从mock.js中获取<br /> *<br /> * @return string<br /> */<br />functionmockData()<br />{<br /> if(file_exists('mock.json')){<br /> $data=json_decode(file_get_contents('mock.json'));<br /> }else{<br /> $data=Array(<br /> 'code'=>200,<br /> 'desc'=>'Get the default data.',<br /> 'login'=>true,<br /> 'data'=>Array(<br /> 'name'=>'test api.'<br /> )<br /> );<br /> }<br /> returnjson_encode($data);<br />}<br /> <br /> <br />/**<br /> * 输出字符集,允许结果为gbk、gb2312、utf-8<br /> * 如果非法或者未设置,输出utf-8<br /> *<br /> * @return string<br /> */<br />functioncharset()<br />{<br /> $ret='utf-8';<br /> if(empty($_REQUEST[charset])){<br /> return$ret;<br /> }else{<br /> $charset=strtolower($_REQUEST[charset]);<br /> if(in_array($charset,array('gbk','gb2312'),true)){<br /> return$charset;<br /> }else{<br /> return$ret;<br /> }<br /> }<br />}<br /> <br /> <br />/**<br /> * 拼装json数据<br /> *<br /> * @return string<br /> */<br />functionjsonGenerator()<br />{<br /> if(!empty($_REQUEST[callback])){<br /> header('Content-Type: application/javascript; charset='.charset());<br /><span style="color:transparent">~来1源gaodai#ma#com搞*代#码1网</span><abbr>搞代gaodaima码</abbr> return$_REQUEST[callback]."(".mockData().");";<br /> }else{<br /> if(!empty($_REQUEST[crossDomain])){<br /> header("Access-Control-Allow-Origin: *");<br /> };<br /> header('Content-type: application/json; charset='.charset());<br /> returnmockData();<br /> }<br />}<br /> <br />/**<br /> * 输出结果<br /> */<br />die(jsonGenerator());<br />
如果你不想改动php里的data object,觉得麻烦,那么直接改动json好了,你或许会问,那我为啥不直接访问一个json呢,答:
1.你或许需要一个callback包装这个结果;
2.你或许期望这个json允许跨域请求;
3.你或许期望这个json可以自定义header编码…
<br />{<br /> "data":1,<br /> "w":"测试"<br />}<br />
代码很简单,就不过多描述了。