我在godaddy服务器上测试我的api。但由于某些原因,路线无效并给出404错误
为了确保路线存在......我测试它就像使用下面的代码一样。
$routeCollection = \Route::getRoutes();
foreach ($routeCollection as $value) {
echo $value->getPath();
}
你也可以在这里查看相同内容:http://pankajservers.in/当你输入用户名或密码中的任何内容时,当你看到控制台时...它会显示你的404 api错误,在本地它可以正常工作。
JQuery的
var data = {
"EmailAddress": $("input[name='EmailAddress']").val(),
"Password": $("input[name='Password']").val(),
"_token": "{{ csrf_token() }}"
};
$.ajax({
method: "POST",
url: "{!! route('AuthenticateUser') !!}",
cache: false,
async: true,
data: data,
success: function(result) {
return false;
},
error: function(result) {
return false;
}
});
HTML
<form method="POST" action="http://pankajservers.in/api/v1/AuthenticateUser"
accept-charset="UTF-8"
id="loginForm">
<input name="_token" type="hidden" value="GtSNw3bgzFO6jwi8IVFWnvymd2e8EqIXkAhPtPxb">
<input class="form-control" name="EmailAddress" type="text">
<input class="form-control" name="Password" type="password" value="">
<button type="submit" class="btn btn-primary">
</form>
POST路线
Route::post('/AuthenticateUser',
array(
'uses' => 'API\UserManagement\Auth\Login\apiLoginController@AuthenticateUser',
'as' => 'AuthenticateUser'
)
);
路线服务提供商
Route::group([
'middleware' => 'api',
'namespace' => $this->namespace,
'prefix' => 'api/v1',
], function ($router) {
require base_path('routes/API/UserManagement/Auth/Login/Login.php');
});
答案 0 :(得分:3)
让我觉得你有重写问题。我尝试过你网站上的路线,但我在路线路径上加上/index.php
。这引发了一个Laravel方法异常,当你访问一个仅限POST的路由时会出现这个异常。在这里,看看:
http://pankajservers.in/index.php/api/v1/AuthenticateUser
我不确定你是使用Nginx还是Apache,但我怀疑Nginx配置或Apache .htaccess是不是很正确。
修改强>
查看Laravel的安装文档。有一个关于重写配置的部分可能会给你一些见解:
https://laravel.com/docs/5.4/installation#web-server-configuration
答案 1 :(得分:3)
您可以通过将'prefix' => 'api/v1'
更改为'prefix' => 'v1'
,
api
路线的网址中假定为laravel api.php
中的。
答案 2 :(得分:1)
在您的ajax请求中,所有API请求都必须以'/ api /'作为前缀。
<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css" rel="stylesheet"/>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link active" href="#">Active</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" id="devDD" href="#" role="button" aria-haspopup="true" aria-expanded="false">Devices</a>
<div class="dropdown-menu dropdown-menu-fixed-height" id="devDropdown">
<input class="form-control form-control-sm" type="text" placeholder="Search..." id="devSearch" style="width:8rem; margin:0 1rem">
<a class="dropdown-item" href="#">All Entires</a>
<a class="dropdown-item" href="#">Big bob</a>
<a class="dropdown-item" href="#">Little bob</a>
<a class="dropdown-item" href="#">Sausage</a>
<a class="dropdown-item" href="#">Chicken</a>
<span class="filter-results no-results">Oops, nothing found!<span>
</div>
</li>
</ul>
答案 3 :(得分:0)
对我来说,在mysql中被调用的行不存在,因此结果是未找到404响应。