如何在 web api 中使用 get 作为方法参数
Posted
技术标签:
【中文标题】如何在 web api 中使用 get 作为方法参数【英文标题】:how to use the get as method parameter in web api 【发布时间】:2020-04-09 05:05:56 【问题描述】:为了在 post man 中使用查询字符串参数来获取单个数据,我想在尝试此操作时使用 get 方法作为参数 public HttpResponseMessage test(int id) 它显示错误
未找到与请求 URI 'http://localhost:53720/api/test/1' 匹配的 HTTP 资源。
找不到与名为“test”的控制器匹配的类型。
代码是:
public class DefaultController: ApiController
public object Conn get; private set;
[Route("api/test/id")]
[HttpGet]
public HttpResponseMessage test(int id)
DataSet ds = new DataSet();
string conname = ConfigurationManager.ConnectionStrings["con"].ConnectionString;
SqlConnection conn = new SqlConnection(conname);
conn.Open();
SqlCommand cmd = new SqlCommand("select *from Employees", conn);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(ds);
return new HttpResponseMessage
Content = new StringContent(JsonConvert.SerializeObject(ds), Encoding.UTF8, "application/json")
;
【问题讨论】:
如果能解决您的问题,请将其标记为答案。 meta.stackexchange.com/questions/147531/…***.com/help/someone-answers 【参考方案1】:您的id
是您路线中的可变参数,您的路线看起来不正确。尝试在 id 周围使用 。如下所示。
[Route("api/test/id")] // <===== notice that id is in
[HttpGet]
public HttpResponseMessage test(int id)
如果你想限制路由模板中参数的匹配方式,你也可以使用路由约束。一般语法是parameter:constraint
所以在你的情况下,它会是这样的:
[Route("api/test/id:int")]
查看here了解更多详情
【讨论】:
以上是关于如何在 web api 中使用 get 作为方法参数的主要内容,如果未能解决你的问题,请参考以下文章
如何将类型的对象作为参数传递给Web Api Get / Post方法
如何使用 MVC Web Api GET 将对象作为参数传递
如何在 Web API 2 控制器中放置多个 GET 方法?