ASP.NET Web API POST 方法错误

2 投票
2 回答
1263 浏览
提问于 2025-04-18 12:54

我用ASP.NET Web API创建了一个API项目。

然后我在模型中添加了一个产品类。

public class Product
{
    public int id { get; set; }
    public string name { get; set; }
    public string category { get; set; }
    public decimal price { get; set; }
}

接着我在控制器中添加了一个ProductsController类。

public IEnumerable<Product> getProductsByCategory(string category)
    {
        List<Product> productsInCategory = new List<Product>();

        foreach (Product p in products)
        {
            if (p.category.Equals(category, StringComparison.OrdinalIgnoreCase))
                productsInCategory.Add(p);
        }

        return productsInCategory;
    }


    [HttpPost]
    public void PostByProducts(string name)
    {

        int newId = 0;
        //if (products.Count > 0)
        //    newId = products[products.Count - 1].id + 1;

        //products.Add(new Product { id = newId, name = name, category = category, price = price });

    }

我用Python的requests库调用了post方法。

import requests 
payload = {'name':'t1'} 
r = requests.post("http://localhost:59386/api/products",  data=payload)
print r.text

但是,get方法运行得很好,post方法却不行。

我在PostByProducts方法里设置了一个断点,然后发起请求。

可是,程序没有在断点处停下来。

2 个回答

0

下面是WebApiConfig的内容:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        ); 
        config.EnableSystemDiagnosticsTracing();
    }
}
0

http://encosia.com/using-jquery-to-post-frombody-parameters-to-web-api/

使用模型类作为POST方法的参数:

[HttpPost]
public void PostByProducts(Product p)
{
    products.Add(p); 
}

或者只使用一个参数:

[HttpPost]
public void PostByProducts([FromBody] name)
{
    //any codes
}

在这种情况下调用:

// name will be null.
$.post('api/product', { name:tom });

// name will be not null. 
$.post('api/values', "=" + value);

更多细节请参考上面的内容。

撰写回答