Web API 控制器不像 MVC 控制器那样使用“动作”。Web API 控制器也没有真正使用[HttpPost]
,[HttpGet]
属性。它们根据 ApiControllers 内部的方法名称来分派请求。我建议阅读更多关于与 MVC 的 Web API 差异的信息,因为它很相似,但有时很难启动和运行......
这是我为测试而制作的 Web API 中的一些非常通用的示例。我没有 JavaScript 可发布到此 API,因为我是从 .NET WPF 应用程序发布的。你会发布到“/Important”而不是“/Important/Post”希望这会让你走上正确的轨道......
WebAPIConfig.cs(路由):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace ArrayTest.WebAPI
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
API 控制器:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using ArrayTest.Models;
using System.Threading;
namespace ArrayTest.WebAPI.Controllers
{
public class ImportantController : ApiController
{
// POST api/important
public HttpResponseMessage Post(ImportantList values)
{
//manipulate values received from client
for (int i = 0; i < values.ImportantIDs.Count; i++)
{
values.ImportantIDs[i] = values.ImportantIDs[i] * 2;
}
//perhaps save to database, send emails, etc... here.
Thread.Sleep(5000); //simulate important work
//in my case I am changing values and sending the values back here.
return Request.CreateResponse(HttpStatusCode.Created, values);
}
}
}
模型:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ArrayTest.Models
{
public class ImportantList
{
public List<int> ImportantIDs { get; set; }
}
}