参数查询不适用于API Get方法



如果我用参数查询调用HttpGet方法,则只调用没有参数的Get方法。如何使用参数id=2调用第二个Get方法

http://localhost:10436/api/testapi?id=2

代码

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace TestApi1
{
[Route("api/testapi")]
[ApiController]
public class TestApiController : ControllerBase
{
public ActionResult Get()
{
return Ok("Gets Working");
}

[HttpGet("{id:int}")]
public ActionResult Get(int id)
{
return Ok("Gets Working with ID");
}
}
}

所有路线均使用vs2019和Postman进行测试。它们工作正常

如果你想使用

http://localhost:10436/api/testapi?id=2

改变你的动作

public ActionResult GetById([FromQuery] int id)
{
return Ok("Gets Working with ID");
}

但是如果你想使用已有的动作,使用这个url

http://localhost:10436/api/testapi/2
[HttpGet("{id}")]
public async Task<ActionResult> Get (int id)
{
//clarify code
}

并发送此请求http://localhost:10436/api/testapi?id=2

你的代码将工作。你的代码不工作,因为你的id大写和小写的事实,我认为。

[HttpGet("idName/{id}")]

发送此请求http://localhost:10436/api/testapi/idName?id=2

另一个进程

[HttpGet("{id}", Name = "Get")]
public async Task<ActionResult> Get (int id)
{
//clarify code
}

并发送此请求http://localhost:10436/api/testapi?id=2

另一个进程再次出现

[HttpGet("{id}", Name = "GetById")]
public async Task<ActionResult> GetById (int id)
{
//clarify code
}

发送此请求http://localhost:10436/api/testapi?id=2

最新更新