asp.net WebApi 2 路由查询字符串 json 带有路由参数
asp.net WebApi 2 routing query string json with route parameter
如何实现下面的路由方案
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)
{
但是该代码无法正常工作。你能帮我吗?
'~'在动作指定的路由中,覆盖路由前缀。
尝试删除它。它应该有效。
例如
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 中的属性作为 url 参数传递,WebAPI 会自动将它们绑定到 objectFromUri 对象。
如何实现下面的路由方案
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)
{
但是该代码无法正常工作。你能帮我吗?
'~'在动作指定的路由中,覆盖路由前缀。
尝试删除它。它应该有效。
例如
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 中的属性作为 url 参数传递,WebAPI 会自动将它们绑定到 objectFromUri 对象。