Rest 自定义Web API控制器参数
我们有一个从模型生成的Web API控制器。该模型具有以下形式:Rest 自定义Web API控制器参数,rest,post,model-view-controller,asp.net-web-api,http-status-code-405,Rest,Post,Model View Controller,Asp.net Web Api,Http Status Code 405,我们有一个从模型生成的Web API控制器。该模型具有以下形式: public class Pdf { public int ID { get; set; } public string Name { get; set; } public string Url { get; set; } // File stored in AWS public int Job_ID { get; set; } public List<PdfPage> { ge
public class Pdf
{
public int ID { get; set; }
public string Name { get; set; }
public string Url { get; set; } // File stored in AWS
public int Job_ID { get; set; }
public List<PdfPage> { get; set; }
}
但是,将此机构传递到邮政路线:
// POST: api/Pdfs
[ResponseType(typeof(Pdf))]
public async Task<IHttpActionResult> PostPdf(Pdf pdf)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.JobFiles.Add(pdf);
await db.SaveChangesAsync();
return CreatedAtRoute("DefaultApi", new { id = pdf.ID }, pdf);
}
{pdf: {Job_Id: 395, Name: "fds"}, widthInches: 8.5, heightInches: 11}
导致“405方法不允许”和“请求的资源不支持http方法‘POST’”正文中的消息
如何将附加参数传递到POST路由?我需要定制路线吗?如果是这样,那会是什么样子?提前感谢。您遇到的问题是由于默认情况下,Web Api使用URL查询字符串中的值将参数与简单数据类型(如double)绑定。因此,您有两种选择:
- 告诉Web Api通过修改要修改的操作从主体获取值
public async Task postdf(Pdf格式,[FromBody]双高英寸,[FromBody]双宽英寸)
- 在查询字符串而不是正文中传递高度和宽度值
…/postdf?高英寸=11,宽英寸=8.5
[FromBody]
不能在同一路由签名中使用两次。
{pdf: {Job_Id: 395, Name: "fds"}, widthInches: 8.5, heightInches: 11}