2018-01-11 19:40:45 3115次浏览 6条回答 0 悬赏 25 金钱

紧急求助。yii2给IOS提供接口,必须使用 RESTful API的方式吗?
有没有什么办法能够跨越yii2的检验规则

补充于 2018-01-12 20:51

我直接在backend的controller里面创建TestController.php,然后创建index方法如下:
public function actionIndex() {

echo json_encode(['code'=>1]);

}
浏览的时候在浏览器是正常的。但是在模拟器上显示输出了很多HTML代码。并且手机端也接受不到数据

  • 回答于 2018-01-16 14:39 举报

    不用刻意使用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' => '登录成功',
        ];
    }
    
    觉得很赞
  • 回答于 2018-01-16 10:43 举报

    是 return json_encode(['code'=>1]);, 不是echo

    觉得很赞
  • 回答于 2018-01-15 15:55 举报

    RESTful API是大家遵循的规则,这样开发者,与使用开发者可以省很多事。
    大家都讲本地方言,很多人听不懂,来个世界语言多好,但是没有规定一定要干嘛。

  • 回答于 2018-01-15 09:25 举报

    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 条回复
    回复于 2018-01-17 01:16 回复

    这个方法可以的,我们也用这种原始方式,基本就是这样来拼接http请求的,登录都是向一个带form的页面发请求。
    不过那时是用原生php写的后台,后来改用了yii2,看了下restful,感觉这样做方便可靠快速,规范不规范倒不重要。

  • 回答于 2018-01-12 19:36 举报

    不一定非要用restful api,但用的话可以省很多事

    4 条回复
    回复于 2018-01-12 20:52 回复

    我直接在backend的controller创建TestController.php,在里面创建index方法,然后输出JSON格式的数据。浏览器上可以看到,但是在IOS模拟器上可以看到返回很多HTML代码。IOS也接收不到数据,像是视图。这该怎么处理呢?

    回复于 2018-01-12 21:28 回复

    返回json 数据 用控制器的 : asJson() 方法,而且都是通过返回值返回数据的,包括视图 return $this->render('index'); 不建议直接在方法里面使用 echo 输出

    public function actionTest()
    {
        return $this->asJson(['code' => 1]);
    }
    
    回复于 2018-01-12 23:34 回复

    还是不行。算了。不找原因了。找不到了。想其他办法吧

    回复于 2018-01-14 09:43 回复

    还有你要看ios 的请求方法的,他们出现很多html代码,说明已经有报错了,可以让ios 抓包看下!我觉得很有可能是ios 用的 post 请求, yii post 请求会有csrf 验证, 你可以 关闭验证看下 !在控制器中添加:

    public $enableCsrfValidation = false;
    
  • 回答于 2018-01-12 13:21 举报

    啥检验规则?
    即使有规则,那还不是你说了算,你要用就用,不用就关

    1 条回复
    回复于 2018-01-12 13:38 回复

    必须使用 RESTful API的方式吗?

您需要登录后才可以回答。登录 | 立即注册
zzybeyond
职场新人

zzybeyond

注册时间:2017-07-26
最后登录:2018-05-22
在线时长:4小时27分
  • 粉丝1
  • 金钱10
  • 威望0
  • 积分50

热门问题