c# - Web API 响应 XML/JSON 而不是字符串
问题描述
我正在尝试创建一个 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;
}
解决方案
嗨几点-
有没有办法返回格式更好的东西,比如 JSON 或 XML? 我该怎么做?
从 WEB API 的角度来看,如果对象是可序列化的,那么它将自动转换为格式良好的 XML 或 JSON。因此,与其返回字符串,不如返回“books”,在这种情况下它是一个 IEnumerable,因此您不必担心格式化。
您可能还必须看到以下相同的讨论-
您正在尝试根据标题获取特定书籍
还想建议而不是检查 Value 而不是 XmlElement,所以替换下面的行
x => x.Element("title").ToString().ToLower().Contains(id)
和 -
x => x.Element("title").Value.ToString().ToLower().Contains(id)
因此,您要编写的最终代码是针对特定书籍的列表-
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);
});
}
});
});
推荐阅读
- sql - 在sql server中将bool更新为不可为空
- javascript - Webpack 如何使用 $translatePartialLoader 缓存半身角翻译?
- java - 在 C++ 类方法循环中创建 JVM - 调用 API
- r - 能够将 1 行现有列与 R 中的另一行现有列合并以创建第 3 列
- javascript - 如何让硒等到页面完全呈现?
- java - 是否可以在 Selenium 网格中注册自定义 webdriver?
- css - 如何在 CSS 中制作蛋形?
- mysql - 在多级时间序列数据中插入缺失的日期记录
- python - AttributeError:“张量”对象没有属性“_keras_shape”
- java - MPAndroidChart setData 多行