【发布时间】:2021-06-16 03:21:06
【问题描述】:
在测试我的端点时,我发现端点在发送不同的输入值时返回了不同的内容类型。
例如:当给定 ID 时,端点返回一个供应商。如果 HTTP 状态代码为 200,则内容类型为“application/json; charset=utf-8; v=1.0”。
但是当我像随机字符串而不是整数一样提交废话时,显然 api 返回 HTTP 400。内容类型现在是“application/json; charset=utf-8”。缺少“v=1.0”。
这似乎微不足道,但我们的集成测试会检查 Content Type 是否与预期的 application/json; charset=utf-8; v=1.0 一样。
另外,我们在Startup.cs中定义了:options.DefaultApiVersion = new ApiVersion(1, 0);
端点代码:
[HttpGet("{id:int}")]
public async Task<IActionResult> GetById(int id)
{
var body = await _lieferantenService.GetById(id);
return Ok(body);
}
有人遇到过这种问题吗?
【问题讨论】:
-
您正在使用 api 版本控制。现在我们有一个我们无法读取的请求,因此在它到达您的 api 之前有一个 400 响应。也就是说,当时根本没有可用的版本,因此不可能返回一个。
-
@ChristophLütjen 所以基本上你的意思是,我无法检查我测试失败案例的内容类型,因为那时 API 版本不可用。
-
@ChristophLütjen 在那种情况下,我希望 404 Not found。不是 400 错误请求
-
好吧,我放弃了 - 似乎很久以前我就开始使用 api 版本控制了。
-
您的回复似乎需要在内容类型中包含
v=1.0后缀?问题是它(或哪个代码)附加了v=1.0?这当然不是asp.net core框架。如果您发现负责附加该v=1.0的代码,则该代码可能有一些错误或某些其他代码会在某处覆盖响应内容类型(稍后在管道中)
标签: c# .net asp.net-core asp.net-core-webapi