使用Fiddler向WebApi发送POST请求

Tim*_*Tim 9 c# rest asp.net-web-api asp.net-mvc-5

我正在编写一个简单的WebApi程序,使用C#.(我非常了解MVC,但我是WebApi的新手.)它包含一个Vendors控制器(VendorsController.cs),它包含一个"getvendor"动作,如下面的代码示例所示:

[RoutePrefix("api/vendors")]
public class VendorsController : ApiController
{
    [Route("getvendor"), HttpPost]
    public TAPUser GetVendor([FromBody] string username)
    {
        Int32 userid = -1;

    ...
Run Code Online (Sandbox Code Playgroud)

路由配置如下:

// Web API routes
config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { action = RouteParameter.Optional, id = RouteParameter.Optional
);
Run Code Online (Sandbox Code Playgroud)

我正在使用Fiddler来测试程序.首先,我在没有[FromBody]的情况下运行上面的代码并使用Fiddler在URL中发送带有用户名的POST请求,如下所示: http:// localhost:60060/api/vendors/getvendor?username = tapuser

这很好.tapuser作为参数传递给GetVendor,并且操作返回了预期的结果.

接下来,我添加了[FromBody]并在请求正文中添加了username = tapuser.这次,当我发送请求时,tapuser没有传递给操作.GetVendor()的参数为null.我在请求主体上尝试了各种变体,例如{"username":"tapuser"},但它没有帮助.我也尝试过以各种方式更改路径,例如将routeTemplate更改为"api/{controller}/{action}/{id}".这也没有帮助.我确定我错过了很简单的东西,但我只是没有看到它.

小智 16

尝试将您的价值直接放入请求正文中.看到这个. 在此输入图像描述