ASP.NET Web API POST 方法错误
我用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);
更多细节请参考上面的内容。