为了账号安全,请及时绑定邮箱和手机立即绑定

Web API 响应 XML/JSON 而不是字符串

Web API 响应 XML/JSON 而不是字符串

C#
函数式编程 2022-01-16 16:16:46
我正在尝试创建一个 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;    }
查看完整描述

1 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

嗨几点-


有没有办法返回格式更好的东西,比如 JSON 或 XML? 我该怎么做?


从 WEB API 的角度来看,如果对象是可序列化的,那么它将自动转换为格式良好的 XML 或 JSON。因此,与其返回字符串,不如返回“books”,在这种情况下它是一个 IEnumerable,因此您不必担心格式化。


您可能还必须看到以下相同的讨论-


返回 XML 的 WebAPI


您正在尝试根据标题获取特定书籍


还想建议而不是检查 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);

            });

        }

    });

});


查看完整回答
反对 回复 2022-01-16
  • 1 回答
  • 0 关注
  • 149 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信