API 返回 404,但记录插入到数据库中


Api returns 404, but record is inserted in database

我不明白问题是什么(我的代码正在工作,我不知道为什么)。我的 api 资源正在工作(因为数据已插入数据库),但我仍然找不到 404 方法。

这是我的角度控制器

controllers.tradeCtrl = function($scope, $routeParams, userFactory, productsFactory, sessionFactory, $timeout, tradeFactory){
   $scope.sendTradeRequest = function () {
   var requestedUserId = $scope.user.id_user;
   var requestedUserItemsIds = $scope.i;
   var myRequestedItemsIds = $scope.o;
   tradeFactory.createTrade(requestedUserId, requestedUserItemsIds, myRequestedItemsIds).then(function(response){
   console.log(response);
}

我的工厂

app.factory('tradeFactory', ['$http', '$location', function($http, $location){
    var factory = {};
    factory.createTrade = function(requestedUserId, requestedUserItemsIds, myRequestedItemsIds){
        return $http({
            method: 'POST',
            url: $location.protocol() + '://' + $location.host() + '/server/api/trades/makeTrade',
            headers : { 'Content-Type': 'application/x-www-form-urlencoded' },
            data : $.param({
                requestuserId : requestedUserId,
                requestedUserItemsIds : requestedUserItemsIds,
                myRequestedItemsIds : myRequestedItemsIds
            })
        }).then(function successCallback(response){
            console.log(response);
            return response;
        },function errorCallback(response) {
            console.log('Failed to create new trade: ' + response);
        });
    }
    return factory;
}]);

我的休息控制器用点火器制造

class Trades extends REST_Controller {
    public function __construct(){
        parent::__construct();
        $this->load->model('Model_trades');
    }
    public function index_get(){
        $this->response($this->Model_trades->get_all());
    }
    public function newTrade_post(){
        $otherUserId = $this->input->post('requestuserId');
        $otherUserItemIds = $this->input->post('requestedUserItemsIds');
        $currentUserItemIds = $this->input->post('myRequestedItemsIds');
        $this->response($this->Model_trades->create($otherUserId, $otherUserItemIds, $currentUserItemIds));
    }
}

我在代码点火器中用于插入新记录的模型函数

function create($otherUserId, $otherUserItemIds, $currentUserItemIds){
    $data = array(
        'request_id_user' => $this->session->userdata('id_user'),
        'request_products' => $currentUserItemIds,
        'response_id_user' => $otherUserId,
        'response_products' => $otherUserItemIds,
        'date_c' => date("Y-m-d H:i:s"),
        'id_status' => 1
    );
    $this->db->insert('trades', $data);
}

最后安慰出放

POST http://myApp.com/server/api/trades/makeTrade 404 (Not Found)(anonymous function) @ angular.js:10765sendReq @ angular.js:10558serverRequest @ angular.js:10268processQueue @ angular.js:14792(anonymous function) @ angular.js:14808Scope.$eval @ angular.js:16052Scope.$digest @ angular.js:15870Scope.$apply @ angular.js:16160(anonymous function) @ angular.js:23618jQuery.event.dispatch @ jquery-2.1.4.js:4435elemData.handle @ jquery-2.1.4.js:4121
factory.js:266 Failed to create new trade: [object Object]
controllers.js:662 undefined

但是我的数据库中有新的记录。问题出在哪里?

您的模型函数不返回任何内容$this->response因此不会看到真实的返回

尝试

function create($otherUserId, $otherUserItemIds, $currentUserItemIds){
    $data = array(
        'request_id_user' => $this->session->userdata('id_user'),
        'request_products' => $currentUserItemIds,
        'response_id_user' => $otherUserId,
        'response_products' => $otherUserItemIds,
        'date_c' => date("Y-m-d H:i:s"),
        'id_status' => 1
    );
   return $this->db->insert('trades', $data);
}

整个问题出在nginx上。缓存未正确刷新网页。清除缓存后,应用程序将按预期工作。