Reactjs Api调用在Yii2中不起作用

时间:2018-06-22 12:20:23

标签: reactjs yii2

我是React js的新手,我使用Yii2作为后端。当我向yii2发送API请求时,它向我返回500错误。我不知道我在哪里出错。

这是我的API调用React Js代码,

fetch('localhost/learning-react/api/admin/signup', {
        method: 'POST',
        headers: {
          'Accept': 'application/json',
          'Content-Type': 'application/json'
        },
          body: JSON.stringify({
            fname:fname,
            lname:lname,
            email:email,
            uname:uname,
            passwd:passwd
          })
        }).then((response) => response.json())
          .then((responseJson) => {
             if(responseJson['status']==='1') 
             {
              alert(responseJson['msg']);
             }
           }

这是我的Yii2后端代码,

 public function actionSignup()
    {   
        //$model = new TblUsers();
        return "success";
    }

很抱歉,我无法在代码中发现错误。.

2 个答案:

答案 0 :(得分:2)

首先,500表示常规服务器错误。因此,您将需要根据我的评论发布错误日志以帮助解决此问题。但是,我发现您在后端的代码是错误的。您不会在代码中使用静态控制器,因此它根本不是REST API。因此,我建议您通读Restful APIs in the Guide。话虽如此,您基本上需要:

  1. 通过继承yii\rest\Controller创建Restful控制器。
  2. 返回Array,DataProvider或yii\base\Model的实例,以确保自动序列化为JSON

因此,我将向您展示一个简单的示例来给您一个想法。请阅读指南,以深入了解REST API with Yii2

<?php

namespace app\modules\v1\controllers;

use yii\rest\Controller;

class LoginController extends Controller
{
    public function actionSignup()
    {
        $model = new TblUsers();
        //register a user
        //return registred user
        return [
            'success' => true,
            'member' => $model;
        ];
    }
}

答案 1 :(得分:1)

请尝试以下操作,可能会有所帮助。

您要发出休息发布请求,这意味着两件事,第一,信息将通过POST请求传播,第二,不要忘记休息。

  1. 尝试在浏览器中打开网址,除非您定义应打开的规则。

所以请继续打开:http://localhost/learning-react/api/admin/signup,您应该在屏幕上看到“成功”,否则您将打印出全部500错误。

  1. 如果您能够在浏览器中打开网址,请再次尝试调用,然后在“网络”标签上检查Chrome调试器。查找500错误,将其打开并读取错误,应将其完整打印在响应选项卡上,即 enter image description here

  2. 解决此问题时,请不要忘记启用规则以仅允许POST作为请求,并为响应添加适当的格式,以便将其用作json。

    Yii :: $ app-> response-> format = Response :: FORMAT_JSON;

希望它有助于调试。