ASP.. NET Web API Post方法错误

本文关键字:方法 错误 Post API NET Web ASP | 更新日期: 2023-09-27 18:12:38

我使用ASP创建API项目。. NET Web API。

并将Product类添加到模型中。

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

并将ProductsController类添加到Controllers中.

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请求调用post方法。

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

但是,Get很好。发帖不好。

我在PostByProducts方法和调用请求中标记断点。

但不停止断点。

ASP.. NET Web API Post方法错误

下面的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();
    }
}

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);