1、通过应用组件配置客户端,/common/config/main-local.php
<?php return [ 'components' => [ 'yqdsjApiHttp' => [ 'class' => 'yii/httpclient/Client', 'baseUrl' => 'http://47.94.90.194:8085/haihe-service', 'transport' => 'yii/httpclient/CurlTransport' ], ], ];
2、通过 setFormat() 方法设置用于请求内容的格式为 JSON,/common/logics/http/yqdsj_api/Article.php
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/02/28 * Time: 13:14 */ namespace common/logics/http/yqdsj_api; use Yii; use yii/base/Model; use yii/web/ServerErrorHttpException; use yii/httpclient/Client; /** * 舆情大数据接口的舆情 * * @author Qiang Wang <shuijingwanwq@163.com> * @since 1.0 */ class Article extends Model { const SCENARIO_VIEW = 'view'; public $service_key; public $id; public $access_token; public function scenarios() { $scenarios = parent::scenarios(); $scenarios[self::SCENARIO_VIEW] = ['service_key', 'id', 'access_token']; return $scenarios; } public function rules() { return [ /* 获取舆情详情 */ [['service_key', 'id', 'access_token'], 'required', 'on' => 'view'], //view ['service_key', 'compare', 'compareValue' => Yii::$app->params['yqdsjApi']['serviceKey'], 'on' => 'view'], //view ]; } public function attributeLabels() { return [ 'service_key' => /Yii::t('model/http/yqdsj-api/article', 'Service Key'), 'id' => /Yii::t('model/http/yqdsj-api/article', 'ID'), 'access_token' => /Yii::t('model/http/yqdsj-api/article', 'Access Token'), ]; } /** * 返回舆情详情 * * @return array * * 格式如下: * * 舆情详情 * [ * 'message' => '', //说明 * 'data' => [], //数据 * ] * * 失败(将错误保存在 [[yii/base/Model::errors]] 属性中) * false * * @throws ServerErrorHttpException 如果响应状态码不等于20x */ public function getArticle() { $response = Yii::$app->yqdsjApiHttp->createRequest() ->setFormat(Client::FORMAT_JSON) ->setMethod('post') ->setUrl('article/detail.do?access_token=' . $this->access_token) ->setData(['docId' => $this->id]) ->send(); // 检查响应状态码是否等于20x if ($response->isOk) { // 检查业务逻辑是否成功 if ($response->data['code'] === 0) { $yqdsjApiData = ['message' => '', 'data' => $response->data['result']]; return $yqdsjApiData; } else { $this->addError('id', $response->data['msg']); return false; } } else { throw new ServerErrorHttpException(Yii::t('error', Yii::t('error', Yii::t('error', '20042'), ['statusCode' => $response->getStatusCode()])), 20042); } } }
3、使用 REST API 时,由于请求格式全部为 JSON,为了简化代码,直接配置请求对象的格式即可。通过配置 [[/yii/httpclient/Client]] 的 requestConfig 来完成,配置所有的请求格式为 JSON,编辑 /common/config/main-local.php
<?php return [ 'components' => [ 'yqdsjApiHttp' => [ 'class' => 'yii/httpclient/Client', 'baseUrl' => 'http://47.94.90.194:8085/haihe-service', 'requestConfig' => [ 'format' => yii/httpclient/Client::FORMAT_JSON ], 'transport' => 'yii/httpclient/CurlTransport' ], ], ];
4、取消 setFormat() 方法设置用于请求内容的格式为 JSON,以精简代码,编辑 /common/logics/http/yqdsj_api/Article.php
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/02/28 * Time: 13:14 */ namespace common/logics/http/yqdsj_api; use Yii; use yii/base/Model; use yii/web/ServerErrorHttpException; /** * 舆情大数据接口的舆情 * * @author Qiang Wang <shuijingwanwq@163.com> * @since 1.0 */ class Article extends Model { const SCENARIO_VIEW = 'view'; public $service_key; public $id; public $access_token; public function scenarios() { $scenarios = parent::scenarios(); $scenarios[self::SCENARIO_VIEW] = ['service_key', 'id', 'access_token']; return $scenarios; } public function rules() { return [ /* 获取舆情详情 */ [['service_key', 'id', 'access_token'], 'required', 'on' => 'view'], //view ['service_key', 'compare', 'compareValue' => Yii::$app->params['yqdsjApi']['serviceKey'], 'on' => 'view'], //view ]; } public function attributeLabels() { return [ 'service_key' => /Yii::t('model/http/yqdsj-api/article', 'Service Key'), 'id' => /Yii::t('model/http/yqdsj-api/article', 'ID'), 'access_token' => /Yii::t('model/http/yqdsj-api/article', 'Access Token'), ]; } /** * 返回舆情详情 * * @return array * * 格式如下: * * 舆情详情 * [ * 'message' => '', //说明 * 'data' => [], //数据 * ] * * 失败(将错误保存在 [[yii/base/Model::errors]] 属性中) * false * * @throws ServerErrorHttpException 如果响应状态码不等于20x */ public function getArticle() { $response = Yii::$app->yqdsjApiHttp->createRequest() ->setMethod('post') ->setUrl('article/detail.do?access_token=' . $this->access_token) ->setData(['docId' => $this->id]) ->send(); // 检查响应状态码是否等于20x if ($response->isOk) { // 检查业务逻辑是否成功 if ($response->data['code'] === 0) { $yqdsjApiData = ['message' => '', 'data' => $response->data['result']]; return $yqdsjApiData; } else { $this->addError('id', $response->data['msg']); return false; } } else { throw new ServerErrorHttpException(Yii::t('error', Yii::t('error', Yii::t('error', '20042'), ['statusCode' => $response->getStatusCode()])), 20042); } } }
5、在 Postman 中调用接口,响应成功,符合预期,如图1
{ "code": 10000, "message": "获取舆情(舆情大数据)详情成功", "data": { "city": "甘肃省 教育厅", "clusterId": 6048085228, "description": "来源:中国教师资格网 2018年6月12日 分享到 /n评论/n导读: 以下为各省及其辖区教师资格证认定机构联系方式,更多教师资格认定信息敬请关注233网校教师资格证认定栏目! 教师资格取证上岗>>/n各省份及其辖区内各认定机构联系方式/n序号 省份 省厅联系方式 认定机构联系方式/n1 北京市 010-82089117 shixunban@bjie.ac.cn 北京认定机构/n北京市教师资格认定网:http://www.bjtcc.org.cn/n2 天津市 022-23540113/n022-23540149 tjjszg@126.com 天津认定机构/n天津市高等学校师资培训中心:http://www.tjgspx.cn/n3 河北省 0311-66005786/66005789(资格认定)/n0311-86263380(定期注册) jszgrd@sina.com(资格认定) 河北认定机构/n河北省教育厅:http://jszg.hee.gov.cn//n4 山西省 0351-2279655 sxjszgzx@163.com 山西认定机构/n山西省教育厅:http://www.sxedu.gov.cn/n5 内蒙古自治区 0471-2856822 jiaoyuting@126.com/n内蒙古教育:http://www.nmgov.edu.cn/n6 辽宁省 024-26901976 lnjszg@126.com/n辽宁省教师培训交流中心:http://www.lnttec.cn/n7 吉林省 0431-82760337/n0431-82752926(高校资格) jljszg@163.com/njytspb@126.com(高校资格)/n吉林教育信息网:http://www.jledu.gov.cn/n吉林省政府政务公开网(高校):http://zwdt.jl.gov.cn/dtgz/dtjj/n8 黑龙江省 0451-53643467 hljjszgrd@126.com/n黑龙江教育信息网:http://www.hlje.net/n9 上海市 021-62523036 shteacher900@163.com 上海认定机构/n上海教育人才:http://www.shehr.cn/n10 江苏省 025-83239421/nhttp://www.ec.js.edu.cn/col/col8327/index.html/n 网站在线留言 江苏认定机构/n江苏教师教育网:http://www.jste.org.cn/n11 浙江省 0571-88908530/n 0571-88908550 zjjszgzx@zjzk.cn/n浙江省教育考试网:http://www.zjzs.net/n12 安徽省 0551-62831877 ahjszgzx@163.com 安徽认定机构/n安徽省教师资格认定指导中心:http://jszg.hfnu.edu.cn/n13 福建省 0591-83781304 fjjszgzx@163.com/n福建教育网:http://www.fjjszg.com/n14 江西省 0791-86765179 jxjszgzx@sina.com/n江西教育网:http://www.jxedu.gov.cn/n15 山东省 0531-66778381/n 0531-86180266(高校资格) sdjszgzx@163.com/n sdgspx@126.com(高校资格) 山东认定机构/n山东省教师资格认定指导中心:http://www.sdjszg.cn/n 山东省高等学校师资培训中心(高校):www.gspxzx.sdnu.edu.cn/n17 河南省 0371-60867560 hnjszgzx@163.com 河南认定机构/n河南省教师资格网:http://jszg.haedu.gov.cn/n16 湖北省 027—87327255 hbsjszg@sina.com/n湖北教师教育网:http://jsjy.e21.cn/n18 湖南省 0731-88607919/n 0731-84736649(高校资格) hnjszg@hnedu.cn /n湖南省教育厅教师处:http://jsc.gov.hnedu.cn/n19 广东省 020-37628372 jszg@gdhed.edu.cn 广东认定机构/n广东省教师资格网:http://www.gdedu.gov.cn/n20 广西壮族自治区 0771-5815208 sf0771@163.com 广西认定机构/n广西教师教育网:http://www.gxjs.com.cn/n21 海南省 0898-65203038 65203038@163.com 海南认定机构/n海南省教育厅:http://edu.hainan.gov.cn/n22 重庆市 023-62658186/n 023-63865672(高校资格) cqjszg@163.com/n重庆市教师资格网:http://www.jszg.cq.cn/n 重庆市教委人事处(高校):www.cqedu.cn/n23 四川省 028-86138701 anjinyang147@163.com 四川认定机构/n四川省教育厅:http://www.scedu.net/n24 贵州省 0851-86700608 gzjszgzx@gznu.edu.cn/n贵州教育网:http://www.gzsedu.cn//n25 云南省 0871-65141568 jytrsc@126.com 云南认定机构/n云南省教育厅:http://www.ynjy.cn/n26 西藏自治区 0891-6599504 xzjszg@126.com/n西藏教育:http://www.xzedu.com.cn/n27 陕西省 029-88668691 snjszg@126.com/n snjszgzx@126.com 陕西认定机构/n陕西省教育厅:http://www.snedu.gov.cn/n28 甘肃省 0931-7971340 gsjytsfc@126.com 甘肃认定机构/n甘肃省教师资格认定指导中心:http://www.nwnu.edu.cn/cate.do?dept=0087/n29 青海省 0971-6310741 qhsfjy@126.com/n青海省教育厅:http://www.qhedu.cn/n30 宁夏回族自治区 0951-5559106 nxedurs@163.com 宁夏认定机构/n31 新疆维吾尔自治区 0991-4362086 szglc@126.com 新疆认定机构/n新疆生产建设兵团 0991-2896283", "docId": "6048085228", "emotionScore": 30, "emotionTendency": 1, "pics": [], "pubTime": "2018-06-12 10:06:46", "src": "www.233.com", "title": "各省及其辖区教师资格证认定机构联系方式汇总-教师资格证-233网校", "url": "http://www.233.com/teacher/rending/201806/12100118272.html", "exportTime": "2018-06-15 14:29:40" } }
6、查看 Available Debug Data,请求格式为 application/json,如图2
yii/httpclient/CurlTransport::send POST http://47.94.90.194:8085/haihe-service/article/detail.do?access_token=fb46626f0e71e423ca8ab4c750620a85 Content-Type: application/json; charset=UTF-8 {"docId":"6048085228"} E:/wwwroot/pcs-api/common/logics/http/yqdsj_api/Article.php:79 E:/wwwroot/pcs-api/api/rests/yqdsj_article/ViewAction.php:66
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/250415.html