对API的HTTP GET请求 - localhost与服务器。请求得到重复/转换"在服务器上

时间:2016-01-18 12:59:01

标签: angularjs http get slim

我正在使用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() .'}}'; 
    }
}

2 个答案:

答案 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的角度来看。