.net 什么';NET最灵活的webservice API框架是什么?

.net 什么';NET最灵活的webservice API框架是什么?,.net,web-services,asp.net-web-api,.net,Web Services,Asp.net Web Api,在考虑如何为客户实现web服务以编程方式调用我们的服务时,我回顾了Microsoft web API框架,它看起来很棒,但这是最好、最灵活的使用框架吗 例如,我想让客户调用一个RESTful方法,如下所示: public class ProductsController : ApiController { [HttpGet] public void Create(string name, decimal price) { Create(new Produc

在考虑如何为客户实现web服务以编程方式调用我们的服务时,我回顾了Microsoft web API框架,它看起来很棒,但这是最好、最灵活的使用框架吗

例如,我想让客户调用一个RESTful方法,如下所示:

public class ProductsController : ApiController
{
    [HttpGet]
    public void Create(string name, decimal price)
    {
        Create(new Product() { Name = name, Price = price });
    }

    [HttpPost]
    public void Create(Product product)
    {
        // Create product
    }
}


[DataContract(Name = "product", Namespace = "")]
public class Product
{
    [DataMember(Name="name")]
    public string Name { get; set; }
    [DataMember(Name="price")]
    public decimal Price { get; set; }
}
/api/产品/创建

并尽可能灵活,允许客户通过多种不同的方式呼叫

HTTP GET:
/api/products/create?name=widget&price=1.99

HTTP POST:
/api/products/create
name=widget&price=1.99


JSON via POST:
/api/products/create
{ "name": "widget", "price": 1.99 }

XML via POST:
/api/products/create
<product><name>widget</name><price>1.99</price></product>
HTTP获取:
/api/产品/创建?名称=小部件&价格=1.99
HTTP POST:
/api/产品/创建
name=widget&price=1.99
通过POST发送JSON:
/api/产品/创建
{“名称”:“小部件”,“价格”:1.99}
通过POST发送XML:
/api/产品/创建
widget1.99
还有其他有意义的。在一天结束时,我不在乎他们如何调用它,因为我只需要输入来执行操作,我想让客户端通过他们喜欢的、对他们来说最简单的任何方法调用它,然后我可以以相同的格式或特定的格式响应,如果他们通过例如Accept请求头指定的话


Web API框架是否可以处理此问题,或者是否有其他路由框架以这种方式工作,以便使用我可以发送到我的ProductsRepository的产品模型调用我的控制器?

Web API肯定可以处理此问题:)

这是你怎么做的。设置此路线:

config.Routes.MapHttpRoute("WebAPI", "api/{controller}/{action}");
并按如下方式创建模型和控制器:

public class ProductsController : ApiController
{
    [HttpGet]
    public void Create(string name, decimal price)
    {
        Create(new Product() { Name = name, Price = price });
    }

    [HttpPost]
    public void Create(Product product)
    {
        // Create product
    }
}


[DataContract(Name = "product", Namespace = "")]
public class Product
{
    [DataMember(Name="name")]
    public string Name { get; set; }
    [DataMember(Name="price")]
    public decimal Price { get; set; }
}
上面列出的所有内容都应该与此配合使用。第一个操作将处理GET,并且只要请求具有正确的内容类型头,您显示的所有三种不同的POST格式都应该与第二个操作一起正常工作

默认情况下,WebAPI附带反序列化XML、JSON和表单URL编码数据的格式化程序,但您也可以注册自己的自定义格式化程序以支持更多格式。如果您需要更多相关信息,可以在此处找到:

您已经了解了使用Web API的主要优点之一。它使读取和公开各种格式的数据变得非常容易,而无需重新编写业务逻辑