RESTful API 设计
Posted lishalom
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RESTful API 设计相关的知识,希望对你有一定的参考价值。
网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备......)。
因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API构架的流行。
RESTful API 设计要素详见此文 : RESTful API 设计指南
以下简诉API的测试和它在php中的异常处理:
安装浏览器扩展工具 Restlet Client - DHC ,用于API的调试/测试
异常处理:
/** * 常用状态码 * @var [type] */ private $_statusCodes = array( 200 => \'OK\', 204 => \'No Content\', 400 => \'Bad Request\', 401 => \'Unauthorized\', 403 => \'Forbidden\', 404 => \'Not Found\', 405 => \'Method Not Allowed\', 500 => \'Server INternal Error\' );
/** * 判断请求方法和资源对象 * @return [type] [description] */ public function run() { //异常捕获,以免被暴露在前台 try { $this->_setupRequestMethod(); $this->_setupResource(); if ($this->_resourceName == \'users\') { return $this->_json($this->_handleuser()); } else { return $this->_json($this->_handleArticle()); } } catch (Exception $e) { $arr[\'error\'] = $e->getMessage(); $this->_json($arr, $e->getCode()); } }
/** * 输出JSON * @param [type] $array [description] * @return [type] [description] */ private function _json($array, $code = 0) { //同步响应码 if ($code > 0 && $code !== 200 && $code !== 204) { header("HTTP/1.1 " . $code . " " . $this->_statusCodes[$code]); } header(\'Content-Type:application/json;charset=utf-8\'); // echo json_encode($array, JSON_UNESCAPED_UNICODE); echo json_encode($array); exit(); }
/** * 获取请求参数 * @return [type] [description] */ private function _getBodyParams() { //所传参数用双引号 $raw = file_get_contents(\'php://input\'); if (empty($raw)) { throw new Exception(\'请求参数错误\', 400); } return json_decode($raw, true); }
以上是关于RESTful API 设计的主要内容,如果未能解决你的问题,请参考以下文章