2016-09-24 26 views
1

我有这个技术问题,邮差与网页API C#miltiple PARAMS

我已经创建了我的web API控制器中的条目,让我来创建用户:

public IHttpActionResult PostUser(User user) 

我可以用邮差消耗此休息服务是这样的:

Post using Postman

现在我想创建一个类似的条目,但与2参数此时S,这样的:

 public IHttpActionResult PutUser(int id, User user) 

我的问题是我不能达到此方法邮差

我已经尝试:

  • 添加我的 “ID” 参数邮递员石楠
  • 在邮递员身体形态数据上添加我的“id”参数
  • 在邮递员身上添加我的“id”参数-x-www-form-urlencoded
  • 在postman body-raw befor和json代码之后加上我的“id”参数作为分隔符['&',',']和asignation char [':','=']。

没有一个工作,我跑出了想法。

没有人知道如何正确调用此服务吗?

最好的问候!

回答

2

你应该将属性添加到您的方法,因为这样的:

public IHttpActionResult PutUser(int id, [FromBody] User user) 

这表明user参数请求主体接收。接下来,你可以使用以下网址:

http://localhost:15423/api/users?id=<your_id> 

而且有利于充分REST的使用,如果添加[FromUri]id参数和[Route("{id}")]的方法,你可以使用:

http://localhost:15423/api/users/5 

其中5可以被你的id替换。

(两个请求应包括在体内的User对象)

+0

嗨Eavidan,感谢您的答案,这是击溃配置:config.Routes.MapHttpRoute( 名称: “DefaultApi”, routeTemplate:“API/{controller}/{id}“, 默认值:new {id = RouteParameter.Optional} ); 添加[FromBody]不解决我的问题,该帖子继续使用方法'putusers'没有ID ... –

+0

没有必要为此,你添加了Route属性的方法,路线应该可用。您应该阅读Web API中的属性路由。无论哪种方式,第一个建议应该起作用。 – eavidan

+0

嗨!你是对的,我读了关于属性映射,最后我能解决我的问题。问候! –