如果我用参数查询调用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