如何实施以下路由方案
http://localhost/vitualdir/prefix/{id}/methodname?{encoded json defenition of object}
使用asp.net webapi 2路由属性? 我的建议是:
首先:将[RoutePrefix("prefix")]
添加到控制器
其次:实施以下辩护:
[Route("~/{id}/methodname")]
[HttpGet]
public async Task<IHttpActionResult> methodname([FromUri] JsonObjectFromUri object, int id)
{
但是那段代码并没有像我想的那样工作。你能帮帮我吗?
答案 0 :(得分:2)
&#39;〜&#39;在Action上指定的Route中,覆盖Route前缀。
尝试删除它。它应该工作。
例如
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Routing;
namespace MvcApplication2.Controllers
{
public class TestClass
{
public string Name { get; set; }
public int Age { get; set; }
}
[RoutePrefix("prefix")]
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
[Route("{id}/methodname")]
public string Get(int id, [FromUri] TestClass objectFromUri)
{
return "value";
}
// POST api/values
public void Post([FromBody]string value)
{
}
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
}
}
现在,如果您将TestClass中的Properties作为url参数传递,WebAPI将自动将它们绑定到objectFromUri对象。