参数查询不适用于 API Get 方法
Parameter Query is not working for API Get Method
如果我调用带参数查询的 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");
}
}
}
[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
所有路由均使用 VS 2019 和 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 方法,则只调用不带参数的 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");
}
}
}
[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
所有路由均使用 VS 2019 和 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