【问题标题】:ASP.NET Web API Post method errorASP.NET Web API Post 方法错误
【发布时间】:2014-07-14 08:56:06
【问题描述】:

我使用 ASP.NET Web API 创建 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 类添加到控制器 .

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 方法和调用请求中标记断点。

但不要停止断点。

【问题讨论】:

标签: c# python asp.net asp.net-web-api


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    请参阅上面的行以获取更多详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-23
      • 2021-07-11
      • 2018-02-16
      • 2018-10-04
      • 2021-09-30
      • 2013-12-07
      • 1970-01-01
      • 2021-06-26
      相关资源
      最近更新 更多