如何在C#中创建API来推送或接收数据?
嗨,我想为我的网站创建一个API来发送和接收数据。 例如,我需要我的客户上传产品,单个或多个项目。产品提要可以每天、每周或每月发送 产品名称: 产品颜色: 产品重量: 产品图片: 我还需要将此数据发送到其他服务器的功能。而且它应该是用户友好的 但我不知道从哪里开始,用什么技术使它变得简单和充分如何在C#中创建API来推送或接收数据?,c#,asp.net,C#,Asp.net,嗨,我想为我的网站创建一个API来发送和接收数据。 例如,我需要我的客户上传产品,单个或多个项目。产品提要可以每天、每周或每月发送 产品名称: 产品颜色: 产品重量: 产品图片: 我还需要将此数据发送到其他服务器的功能。而且它应该是用户友好的 但我不知道从哪里开始,用什么技术使它变得简单和充分 我有Asp.Net,C#的背景。很高兴能看到一个如何实现它的示例。最好使用WEB服务(WCF服务)来轻松实现这一点。通过WCF进行REST将是最好的选择。下面是一个很好的文章系列,介绍如何使用WCF进行R
我有Asp.Net,C#的背景。很高兴能看到一个如何实现它的示例。最好使用WEB服务(WCF服务)来轻松实现这一点。通过WCF进行REST将是最好的选择。下面是一个很好的文章系列,介绍如何使用WCF进行REST:这里有两个不同的功能,请记住它们本质上应该是分开的。它们中的每一个都被定义为“谁与谁整合” 在第一部分中,您希望公开一个web服务API,客户端可以连接到该API并发送/接收数据(后者仅在请求时提供)。您希望如何定义此网站取决于您希望如何将其公开给客户端、客户端希望如何连接等。常见选项有:
- (经典的ASP.NET web服务)
- (将其视为更现代的ASP.NET web服务)
这里要记住的主要事情是将两者分开,因为试图公开一个同时使用另一个web服务的web服务可能会导致混淆和一些不明显的解决方法。这些是独立的关注点,即使最终用户不知道它们之间的分离程度,也需要在逻辑级别上保持分离。这里有一个简单的最小WCF服务,它返回JSON格式的产品。要进行尝试,请创建一个.NET4.0完整配置文件控制台应用程序。运行该程序,并将其放入浏览器的地址栏: Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
namespace WCFServiceExample
{
public class Product
{
public string Id { get; set; }
public string Name { get; set; }
}
[ServiceContract(Namespace = "")]
public interface IProductService
{
[WebGet(UriTemplate = "Product/{id}", ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
Product Product(string id);
}
public class ProductService : IProductService
{
public Product Product(string id)
{
return new Product { Id = id, Name = "A Sample Product" };
}
}
class Program
{
private static ServiceHost servHost;
static void Main(string[] args)
{
StartService();
Console.WriteLine("\n\nPress any key to exit...");
Console.ReadKey();
}
public static void StartService()
{
servHost = new ServiceHost(typeof(ProductService));
servHost.Open();
}
~Program()
{
if (servHost != null)
{
servHost.Close();
}
}
}
}
App.config
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<diagnostics>
<messageLogging logEntireMessage="true" logKnownPii="true" logMalformedMessages="true"
logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
<endToEndTracing propagateActivity="true" activityTracing="true"
messageFlowTracing="true" />
</diagnostics>
<services>
<service name="WCFServiceExample.ProductService">
<endpoint
address="http://localhost:8080/productservice"
contract="WCFServiceExample.IProductService"
kind="webHttpEndpoint" />
</service>
</services>
</system.serviceModel>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>