私は、REST WCF サービスを (経由でWebServiceHost
) 次のような (単純化された) コントラクトで公開する WPF アプリケーションを持っています。
[ServiceContract]
public interface IItemServiceContract
{
[WebGet(UriTemplate = "Items/{id}")]
Item GetItem(string id);
[WebGet(UriTemplate = "Items")]
IEnumerable<Item> GetItems();
[WebInvoke(UriTemplate = "Items", Method = "PUT")]
IEnumerable<Item> CreateItems(IEnumerable<Item> list);
}
ブラウザでに移動するhttp://localhost:8070/Contoso/Services/Items/ItemService/Items
と、次のような応答が返されます。
<ArrayOfItem xmlns="http://schemas.datacontract.org/2004/07/Contodo.Services.Items" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Item>
<ItemState>
<Comment i:nil="true"/>
<DeactivationTime>0001-01-01T00:00:00</DeactivationTime>
<Id>18f1a5e4-a94a-4f37-a533-3a75a10e7373</Id>
<IsSpecial>false</IsSpecial>
</ItemState>
<ItemTypeId>10</ItemTypeId>
<HelpInfo/>
<Identity>Ident1</Identity>
<AdditionalInfo>
<?xml version="1.0" encoding="utf-16"?>
<Content>
<SpecialContent />
</Content></AdditionalInfo>
<TextParameter>kjhdfsjh kj dkfjg kj</TextParameter>
<UserName i:nil="true"/>
</Item>
</ArrayOfItem>
このサービスを JavaScript で利用するための簡単で摩擦のないアプローチは何でしょうか? クライアントはどうすれば http リクエストとそれに適した XML をすばやく構築できますか?
Item
私はかなり Html5/javaScript の世界にいますが、C# では、XML にシリアル化されるオブジェクトを中心とした API を配置します。しかし、それはここで行く方法ですか?
アップデート:
最初のコメントと回答に基づいて、XML は JavaScript/Web ブラウザーの消費者にとって理想的な形式ではないようですが、形式を JSON に変更することはできません。これは、既にこの XML 形式に依存している既存のクライアントが壊れる可能性があるためです。理想的には、REST コンテンツ タイプ ネゴシエーションを行い、JSONまたはXML を put/get します。しかし、これは WCF REST サービスで実行できますか?