嗨我想爲我的網站創建一個API來發送和接收數據。 例如,我需要我的客戶上傳產品,單件或多件商品。產品Feed可以每天,每週或每月發送。如何在C#中創建API來推送或接收數據?
產品名稱: 產品顏色: 產品重量: 產品圖片:
此外,我需要的功能,將此數據發送到另一臺服務器。它應該是用戶友好的。
但是我不知道從哪裏開始,使用什麼技術使其變得簡單和充分。
我在Asp.Net中有背景,C#。很高興看到一個例子如何處理它。
嗨我想爲我的網站創建一個API來發送和接收數據。 例如,我需要我的客戶上傳產品,單件或多件商品。產品Feed可以每天,每週或每月發送。如何在C#中創建API來推送或接收數據?
產品名稱: 產品顏色: 產品重量: 產品圖片:
此外,我需要的功能,將此數據發送到另一臺服務器。它應該是用戶友好的。
但是我不知道從哪裏開始,使用什麼技術使其變得簡單和充分。
我在Asp.Net中有背景,C#。很高興看到一個例子如何處理它。
爲了達到這個目的,你最好去找網絡服務(WCF SERVICE)。
通過WCF的REST將是最佳選擇。這裏有一篇很好的文章系列向您介紹WCF的REST:REST in WCF
這裏有兩個截然不同的功能,請記住,它們應該基本保持分開。它們中的每一個都由「誰與誰融合」來定義。
在第一部分中,您想公開一個客戶端可以連接併發送/接收數據的Web服務API(後者僅在請求時)。要如何定義這個網站取決於你想如何將其公開給客戶端,他們希望如何連接等常用的選項有:
你甚至可以定義自己的WSDL暴露人工服務,爲客戶消費或接受並返回JSON服務更加的JavaScript友好爲客戶等等。有很多選擇。但以上兩個是你最常見的選擇。
第二部分是你想要「推送」數據到另一個服務的地方。這是其他服務需要公開的內容,您需要將其集成到其中。所以設計應該從那一邊開始。如果您負責該設計,只需按照上述相同的方式進行操作即可。在那裏公開服務,然後使用公開服務的相同技術,在應用程序中使用它們。
這裏要記住的主要是讓兩者分開,因爲試圖公開一個同時消耗另一個Web服務的Web服務可能會導致混淆和一些不明顯的解決方法。這些都是單獨的擔憂,需要在邏輯層面上保持分離,即使最終用戶不知道它們是多麼分離。
這是一個基本的WCF服務,它返回一個JSON產品。要試用它,請創建一個.NET 4.0完整配置文件控制檯應用程序。運行該程序,並將其放入瀏覽器的地址欄中:http://localhost:8080/productservice/Product/23
程序。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>