C# .NETCore2.0WebAPI中的BSON
我有一个.NET核心WebApi项目,我想在BSON中发送请求并获得响应 我安装并添加了C# .NETCore2.0WebAPI中的BSON,c#,asp.net-web-api,asp.net-core,postman,bson,C#,Asp.net Web Api,Asp.net Core,Postman,Bson,我有一个.NET核心WebApi项目,我想在BSON中发送请求并获得响应 我安装并添加了 services.AddMvc().AddBsonSerializerFormatters(); 在ConfigureServices中的Startup.cs中 我还需要做什么吗 我在控制器中有测试方法: [HttpGet] public string GetTestBson() { return "test string bson"; } 我尝试使用Postman测试它,在标题中我有内容类型
services.AddMvc().AddBsonSerializerFormatters();
在ConfigureServices
中的Startup.cs中
我还需要做什么吗
我在控制器中有测试方法:
[HttpGet]
public string GetTestBson()
{
return "test string bson";
}
我尝试使用Postman测试它,在标题中我有内容类型:application/bson
但作为回应,我没有BSON。。。我有“测试字符串bson”
我做错了什么?提出请求时,需要将请求头设置为
Accept
,设置为application/bson
:
Accept: application/bson
通过使用Content-Type:application/bson
,您实际上是在说您发送的请求主体是bson,但由于这是一个GET请求,您实际上根本没有发送主体。使用Accept:application/bson
表示希望在响应中返回bson
StackExchange网站管理员的这篇文章更详细地解释了Accept
和Content Type
之间的区别
除了此处需要的Accept
标题外,您还需要从操作中返回对象或数组,否则BSON serialiser将失败并显示以下消息:
写入字符串值时出错。BSON必须以对象或数组开头。路径“”
要返回对象,可以执行以下操作:
[HttpGet]
public IActionResult GetTestBson()
{
return Ok(new { Value = "test string bson" });
}
这将返回一个新的匿名类型,其属性为
值
——您不能将现有的字符串
作为对象
,因为BSON对象必须具有属性。太好了!现在我在邮递员身上看到类似“…测试…字符串…bson…”的东西,我想可以吗?但是我可以得到hex值来检查它是否反过来工作吗?为了测试的目的,您可以使用类似的东西来从JSON转换为BSON。