Http get with JSON参数调用非参数服务器端get函数

时间:2018-01-12 06:09:44

标签: angular

我遇到了Angular get方法的问题。这是我的get方法声明。

    /// <summary>
    /// Loads a single user.
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    [HttpGet("{id:int}")]
    [ResponseCache(NoStore = true)]
    public async Task<IActionResult> Get(int id)
    {
        try
        {
            Models.Users.AppUserDetail appUserDetail = await AppUserService.LoadAsync(id);
            if (appUserDetail == null)
                return NotFound();

            return Ok(appUserDetail);
        }

        catch (Exception ex)
        {
            Logger.LogError(ex, "Get([{0}])", id);
            return StatusCode(StatusCodes.Status500InternalServerError);
        }
    }

这是服务器端功能

    /// <summary>
    /// Loads the list of all non-deleted application users.
    /// </summary>
    /// <returns></returns>
    [HttpGet]
    [ResponseCache(NoStore = true)]
    public async Task<IActionResult> Get()
    {
        try
        {
            return Ok(await AppUserService.LoadUserListAsync());
        }
        catch (Exception ex)
        {
            Logger.LogError(ex, "Get()");
            return StatusCode(StatusCodes.Status500InternalServerError);
        }
    }

还有另一个没有参数的服务器端功能如下......

pace = (number of words in transcript / duration of file)

但是每当http get方法从Angular调用第二个函数而没有参数被调用,即使提到了JSON参数。 我不明白我做错了什么。对Angular来说很新。

1 个答案:

答案 0 :(得分:0)

您正在将id作为查询参数传递,但操作会从路径中获取它。

将您的角度请求更改为

this.http.get(this.appService.baseUrl + 'api/UserList/' + templateCategoryId).subscribe(...)

这是传递查询参数的正确方法,这里的问题是您已使用id

在路线中定义[HttpGet("{id:int}")]

如果您将其更改为[HttpGet("")]并使用角度代码,则应该