.NET Web API 如何输出字符串、XML、JSON

作者:vkvi 来源:ITPOW(原创) 日期:2023-5-11

Web API Get 中

public string Get()
{
	return "itpow";
}

网页上呈现的不是 itpow,而是:

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">itpow</string>

我们再测试返回一个对象:

public MyClass Get()
{
	return new MyClass();
}
public class MyClass
{
	public string Name { get; set; } = "itpow";
}

得到结果是这样的:

<MyController.MyClass xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MyApi.Api.Controllers">
<Name>itpow</Name>
</MyController.MyClass>

仍然是通过 XML 格式输出的。

能不能自己指定呢?我们继续看。

如何输出字符串呢?

public HttpResponseMessage Get()
{
	HttpResponseMessage responseMessage = new HttpResponseMessage();
	responseMessage.Content = new StringContent("itpow");
	responseMessage.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("text/plain");
	return responseMessage;
}

如何输出 XML 呢?

这里指我们指定格式的 XML。

public HttpResponseMessage Get()
{
	HttpResponseMessage responseMessage = new HttpResponseMessage();
	responseMessage.Content = new StringContent("<root><name>itpow</name></root>");
	responseMessage.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("text/xml");
	return responseMessage;
}

如何输出 JSON 呢?

public HttpResponseMessage Get()
{
	HttpResponseMessage responseMessage = new HttpResponseMessage();
	responseMessage.Content = new StringContent(@"{
	""name"": ""itpow""
}");
	responseMessage.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("text/json");
	return responseMessage;
}

Web API Post 中

在 Post 中,我们输出字符串,不论这个字符串是什么格式,都会使用引号给我们引起来,比如我们想输出 itpow,但是实际输出的是 "itpow",有 7 个字符。如果其中有换行,还使用 \r\n 替换。

也就是说,Post 时,是使用 JSON 格式输出的。

如何输出字符串呢?

跟前面的 Get 一样。

如何输出 XML 呢?

跟前面的 Get 一样。

如何输出 JSON 呢?

简单,直接返回类。

public MyClass Post()
{
	return new MyClass();
}
public class MyClass
{
	public string Name { get; set; } = "itpow";
}

总结

  • Post 要输出 JSON,直接返回类。

  • 其他,自行指定内容和格式。

相关阅读

相关文章