簡體   English   中英

ASP.NET Web API Post方法錯誤

[英]ASP.NET Web API Post method error

我使用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類添加到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方法中標記斷點並調用請求。

但不要停止斷點。

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/

使用Model類作為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);

請參閱上面的行以獲取更多詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM