c# - 为什么我的 $resource POST 会导致 404 错误?

标签 c# angularjs post angular-resource

我有一个接受 Id 和 bool 值的 .Net 移动服务 API。如果我使用正确的参数和 header 从 Postman 调用 API,它就可以正常工作。当我从我的 AngularJs 应用程序调用它时,我收到 404 错误,我不知道为什么。

我的后端 API 方法如下所示:

[HttpPost]
public async Task<IHttpActionResult> SetHoldStatus(string id, bool isHeld) 
  => Ok(new 
    { 
        Transfer = await _workItemRepository.SetTransferHoldStatus(id, isHeld) 
    });

我的 AngularJs Controller 看起来像这样:

(function () {
angular
    .module("pinnacleWarehouser")
    .controller("TransferListCtrl",
    ["transfers",
        "transferWorkItemHoldResource",
        TransferListCtrl]);

function TransferListCtrl(transfers, transferWorkItemHoldResource) {
    var vm = this;

    vm.transfers = transfers;
    vm.length = transfers.length;
    if (vm.length > 0) {
        vm.branch = transfers[0].branchId;

        for (var i = 0; i < vm.transfers.length; i++) {
            vm.transfers[i].transferId = vm.transfers[i].transferId.trim();
        };
    }
    vm.changeHold = function (transferId, isHeld) {
        transferWorkItemHoldResource.save({ Id: transferId, IsHeld: isHeld });
    };
}}());

我的资源是这样的:

(function () {
"use strict";

angular
    .module("common.services")
    .factory("transferWorkItemHoldResource",
    ["$resource", transferWorkItemHoldResource]);

function transferWorkItemHoldResource($resource) {
    return $resource("https://my-test-url.net/api/TransferWorkItem/SetHoldStatus", {}, {
        save: {
            method: 'POST',                 
            headers: { 'ZUMO-API-VERSION': '2.0.0' }
        }
    });
}}());

因此,当我从 Postman 调用 API 时,它会使用我作为参数发送的 bool 更新记录。它有效。

当我运行应用程序并调用 API 时,这就是我得到的:

enter image description here

查看开发工具中的请求 header ,我可以看到我的参数在请求负载中:

enter image description here

我从来没有尝试过使用 $resource 来使用自定义 header 和参数进行 POST,所以我可能会遗漏一些东西。我希望有人能指出我做错了什么。

最佳答案

您应该将 Action 参数定义为复杂对象。

改变它

public async Task<IHttpActionResult> SetHoldStatus(string id, bool isHeld)

public async Task<IHttpActionResult> SetHoldStatus(SetHoldStatusInput input)

public class SetHoldStatusInput
{
    public string Id { get; set; }

    public bool IsHeld { get; set; }
}

关于c# - 为什么我的 $resource POST 会导致 404 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48568323/

相关文章:

c# - 将保存按钮绑定(bind)到 DataTable

javascript - 在 AngularJs 中使用旧代码函数

angularjs - 在 Controller 中测试命名函数

javascript - 存储来自 get 请求的数据

javascript - 向页面添加新元素时出现 HTML ID 问题

c++ - Qt 或 libcurl C++ : Facebook api POST request to image upload

c# - 使用 LINQ 包含嵌套子级的嵌套

c# - do while循环在不满足条件的情况下进入下一步

c# - 这个 if 语句有多少种组合

html - 具有多个条件表达式和多个样式属性的 Angular ng-style