我正在尝试创建一个Web API。我遇到的问题是,我使用字符串而不是格式更好的响应进行响应,因此使用API的应用程序可以更轻松地对其进行解析。
是否可以返回格式更好的内容(如JSON或XML)?以及我该怎么做?
public string Get(string id)
{
XElement xelement = XElement.Load("C:/Users/potter/source/repos/library/lib/Controllers/books.xml");
var books = xelement.Elements("book").Where(x => x.Element("title").ToString().ToLower().Contains(id));
foreach (XElement xEle in books)
{
returnValue = returnValue + xEle.ToString();
}
return returnValue;
}
答案 0 :(得分:1)
嗨,好几分-
是否可以返回格式更好的内容(如JSON或XML)? 那我该怎么做?
从WEB API角度看,如果对象是可序列化的,则它将自动转换为格式正确的XML或JSON。因此,无需返回 string ,而是返回IEnumerable的“ books”,因此您不必担心格式。
您可能还必须在同一-
上查看以下这些讨论您正在尝试根据书名获取特定图书
也将建议而不是检查Value而不是XmlElement,因此替换下面的行
x => x.Element("title").ToString().ToLower().Contains(id)
与-
x => x.Element("title").Value.ToString().ToLower().Contains(id)
因此,您要编写的最终代码是用于特定 books -
列表的 public IEnumerable<XElement> Get(string id)
{
XElement xelement = XElement.Load("C:/Users/potter/source/repos/library/lib/Controllers/books.xml");
return xelement.Elements("book").Where(x => x.Element("title").Value.ToString().ToLower().Contains(id));
}
一旦在服务器端进行了设置,就可以使用类似下面的jQuery ajax从客户端调用API-
$(document).ready(function () {
$.ajax({
type: "GET",
url: "http://localhost:50116/api/values/GetData/",//Change this to your URL
cache: false,
data: {id:'xml'},//Title has this word 'xml'
dataType: "xml",
success: function (xml) {
$(xml).find('book').each(function () {
var name = $(this).find("title").text();
var genre = $(this).find("genre").text();
var price = $(this).find("price").text();
var description = $(this).find("description").text();
alert(name);
alert(genre);
alert(price);
alert(description);
});
}
});
});