我正在使用Angular(正面)和Slim(背面)。
当我在本地发出请求时,它工作正常并返回JSON。
http://localhost/domain/api/jobs
但是当我在服务器上发出相同的请求时:
http://xxx.xxx.xxx.xxx/~username/domain/api/jobs
我得到了404.经过检查,我发现发送的请求实际上已转换为:
http://xxx.xxx.xxx.xxx/~username/~username/domain/api/jobs
我无法发出请求,因为它会自动更改。为什么会这样?
以下是代码:
Angular app / service.factory.js
angular
.module('app')
.factory('jobService', jobService);
function jobService($http) {
var baseUrl = 'api/';
return {
getJobs: getJobs,
};
function getJobs() {
return $http.get(baseUrl + 'jobs');
}
};
Angular app / jobs.config.js
angular
.module('app')
.config(config);
function config($routeProvider) {
$routeProvider.when('/', {
templateUrl: 'templates/jobs-view.html',
controller: JobController,
controllerAs: 'jobCtrl'
});
};
function JobController(jobService) {
var that = this;
jobService.getJobs().success(function (data) {
that.jobs = data;
});
};
Slim PHP api / index.php
require 'vendor/autoload.php';
$app = new \Slim\App;
$app->get('/jobs', 'getJobs');
$app->run();
function getJobs() {
$sql = "select * FROM jobs ORDER BY id";
try {
$db = getConnection();
$stmt = $db->query($sql);
$jobs = $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
echo json_encode($jobs);
} catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
}
答案 0 :(得分:1)
我认为您必须尝试使用完整的网址而不是相对路径。我认为这样可以解决问题。所以使用http://domain.com/restful/api/commands代替restful / api / commands。
答案 1 :(得分:1)
如果您在api / index.php中尝试此操作代替当前的$ app-> get:
$ app-> get(' / ~username / domain / api / jobs',' getJobs');
尝试一下,看看结果是什么,好奇是否可能是其中的一部分。关于使用完整URL与亲戚的讨论,至少在我所指的上下文中,是从API的角度来看。