紧急求助。yii2给IOS提供接口,必须使用 RESTful API的方式吗? [ 2.0 版本 ]
紧急求助。yii2给IOS提供接口,必须使用 RESTful API的方式吗?
有没有什么办法能够跨越yii2的检验规则
zzybeyond 补充于 2018-01-12 20:51
我直接在backend的controller里面创建TestController.php,然后创建index方法如下:
public function actionIndex() {
echo json_encode(['code'=>1]);
}
浏览的时候在浏览器是正常的。但是在模拟器上显示输出了很多HTML代码。并且手机端也接受不到数据
共 6 个回答
-
-
不一定非要用restful api,但用的话可以省很多事
共 4 条回复liujingxing 回复于 2018-01-12 21:28 回复@zzybeyond 返回json 数据 用控制器的 : asJson() 方法,而且都是通过返回值返回数据的,包括视图 return $this->render('index'); 不建议直接在方法里面使用 echo 输出
public function actionTest() { return $this->asJson(['code' => 1]); }
@liujingxing 还是不行。算了。不找原因了。找不到了。想其他办法吧
liujingxing 回复于 2018-01-14 09:43 回复@zzybeyond 还有你要看ios 的请求方法的,他们出现很多html代码,说明已经有报错了,可以让ios 抓包看下!我觉得很有可能是ios 用的 post 请求, yii post 请求会有csrf 验证, 你可以 关闭验证看下 !在控制器中添加:
public $enableCsrfValidation = false;
-
1.我们原始的方式
public function actionTest() { @header('Content-type: application/json'); echo json_encode(['code'=>1]);exit();//一定要exit();终止程序的运行 }
2.yii2里面的方法
public function actionTest() { $response = Yii::$app->response; $response->format = \yii\web\Response::FORMAT_JSON; $response->data = ['code'=>1]; return $response->send(); }
3.方法还有很多。。。
共 1 条回复 -
-
-
不用刻意使用Resful,比如我的项目是如下配置的:
main.php 的 response 配置
'response' => [ 'format' => yii\web\Response::FORMAT_JSON, 'charset' => 'UTF-8', 'formatters'=>[ Response::FORMAT_JSON=>[ 'class'=>JsonResponseFormatter::className(), 'encodeOptions'=>JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_NUMERIC_CHECK ], ] ],
控制器的action例子
public function actionLogin(){ $request=\Yii::$app->request; $userName = $request->post('user_name'); $password = $request->post('password'); return [ 'code' => 200, 'message' => '登录成功', ]; }
龍戰九叁 觉得很赞
zzybeyond
注册时间:2017-07-26
最后登录:2018-05-22
在线时长:4小时27分
最后登录:2018-05-22
在线时长:4小时27分
- 粉丝1
- 金钱10
- 威望0
- 积分50