我有一个 WPF 应用程序,它公开了一个 REST WCF 服务(通过WebServiceHost
),其合同看起来像这样(简化):
[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?
我相当在 Html5/javaScript 世界中,但在 C# 中,我将有一个以Item
序列化为 XML 的对象为中心的 API。但这是要走的路吗?
更新:
根据最初的评论和答案,XML 似乎不是 JavaScript/webbrowser 消费者的理想格式,但我不能只将格式更改为 JSON,因为这可能会破坏已经依赖此 XML 格式的现有客户端。所以理想情况下,我会进行 REST 内容类型协商并放置/获取 JSON或XML。但这可以通过 WCF REST 服务来完成吗?