使用C#web api,我创建了一个更新信息的web api。
// Update
// URI PUT + api/Gender/id
[HttpPut]
public IHttpActionResult PutGender(int id, [FromBody] Gender g)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var query = (from gen in genders
where gen.Id == id
select gen).FirstOrDefault();
if (query == null)
{
return BadRequest("wrong");
}
query.Description = g.Description;
query.LanguageId = g.LanguageId;
query.InternalCode = g.InternalCode;
query.isActive = g.isActive;
query.UpdatedAt = DateTime.Now;
return StatusCode(HttpStatusCode.OK);
}
我正在通过提琴手进行测试,这就是我运行的方式:
网址http://localhost:49625/API/PutGender
行动PUT
请求标题
Content-Type: application/json
User-Agent: Fiddler
Host: localhost:49625
Content-Length: 86
RequestBody
{"Id":1,"Description":"Undecided","LanguageId":null,"InternalCode":0,"isActive":false}
答案 0 :(得分:2)
URL缺少控制器的名称。例如,如果您的控制器名为GenderController
,则该网址应为http://localhost:49625/API/Gender/PutGender
答案 1 :(得分:0)
对于可能遇到此问题的其他人(包括我自己)。还要检查您的路线配置。如果您使用的是默认路由配置:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
无需指定网址(PutGender)的“操作部分”,“PUT http://myhost/api/gender/1”应该没问题。另外,如果您的方法名为Put ... Something,我很确定您可以省略方法签名中的[HttpPut]属性。