我是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";
}
很抱歉,我无法在代码中发现错误。.
答案 0 :(得分:2)
首先,500
表示常规服务器错误。因此,您将需要根据我的评论发布错误日志以帮助解决此问题。但是,我发现您在后端的代码是错误的。您不会在代码中使用静态控制器,因此它根本不是REST API。因此,我建议您通读Restful APIs in the Guide。话虽如此,您基本上需要:
yii\rest\Controller
创建Restful控制器。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请求传播,第二,不要忘记休息。
所以请继续打开:http://localhost/learning-react/api/admin/signup,您应该在屏幕上看到“成功”,否则您将打印出全部500错误。
如果您能够在浏览器中打开网址,请再次尝试调用,然后在“网络”标签上检查Chrome调试器。查找500错误,将其打开并读取错误,应将其完整打印在响应选项卡上,即
解决此问题时,请不要忘记启用规则以仅允许POST作为请求,并为响应添加适当的格式,以便将其用作json。
Yii :: $ app-> response-> format = Response :: FORMAT_JSON;
希望它有助于调试。