如何正确配置 Web-API2 路由以接受转到对象的字符串?
How to correctly configure Web-API2 Routes to accept strings that go to an object?
我有一个 .NET 项目,它有一个 Web API 部分,它应该接受外部请求。该操作接受一个对象,然后进一步使用该对象。问题是在使用 postman app 进行测试时,动作被命中但变量未被传递。
这是我在 postman 中的 URL 的示例:http://localhost:12345/api/login/postlogin?Username=un&Password=pw
我试过使用 [frombody],只有当我收到一个字符串时才有效。我的应用程序将使用大量来回传递的数据。我还在 Whosebug 上尝试了多种解决方案,包括 [FromUri]。 post 仍然为空。
WebAPi.Config snippet:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
config.EnableCors();
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
Action within Controller:
// POST: api/postLogin/
[AllowAnonymous]
[System.Web.Http.HttpPost, System.Web.Http.Route("postlogin")]
public async Task<IHttpActionResult> PostLogin(LoginDTO login)
{
}
前面所述的预期结果是将变量作为对象接收,然后在操作中使用它们。
您的路由配置正确。您应该对参数使用 [FromBody]
属性,因为这是一个 POST
请求。
你永远不应该使用 GET
请求来进行身份验证!
public async Task<IHttpActionResult> PostLogin([FromBody]LoginDTO login)
我有一个 .NET 项目,它有一个 Web API 部分,它应该接受外部请求。该操作接受一个对象,然后进一步使用该对象。问题是在使用 postman app 进行测试时,动作被命中但变量未被传递。
这是我在 postman 中的 URL 的示例:http://localhost:12345/api/login/postlogin?Username=un&Password=pw
我试过使用 [frombody],只有当我收到一个字符串时才有效。我的应用程序将使用大量来回传递的数据。我还在 Whosebug 上尝试了多种解决方案,包括 [FromUri]。 post 仍然为空。
WebAPi.Config snippet:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
config.EnableCors();
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
Action within Controller:
// POST: api/postLogin/
[AllowAnonymous]
[System.Web.Http.HttpPost, System.Web.Http.Route("postlogin")]
public async Task<IHttpActionResult> PostLogin(LoginDTO login)
{
}
前面所述的预期结果是将变量作为对象接收,然后在操作中使用它们。
您的路由配置正确。您应该对参数使用 [FromBody]
属性,因为这是一个 POST
请求。
你永远不应该使用 GET
请求来进行身份验证!
public async Task<IHttpActionResult> PostLogin([FromBody]LoginDTO login)