我正试图让我的网站在ASP.NET核心的Swagger工作,但是,我有一些麻烦(也许是一些混乱?)如何指定查询参数。这个特定的API调用似乎破坏了网站,我不完全确定我做错了什么。下面是API调用:
[HttpGet]
[Route("/v2/config/get_metadata/{name}/from?f={from}/to?t={to}")]
[ValidateModelState]
[SwaggerOperation("GetMetadata")]
[SwaggerResponse(statusCode: 200, type: typeof(Metadata), description: "successful operation")]
public virtual IActionResult GetMetadata([FromRoute][Required] string name,
[FromQuery] DateTime from, [FromQuery] DateTime to)
{
//TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
// return StatusCode(200, default(Dataset));
//TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
// return StatusCode(400);
string exampleJson = null;
exampleJson = "{}";
exampleJson = "";
var example = exampleJson != null
? JsonConvert.DeserializeObject<Metadata>(exampleJson)
: default(Metadata);
//TODO: Change the data returned
return new ObjectResult(example);
}
我不完全确定我做错了什么,所以如果有人能发现错误,请让我知道!我怀疑这是我如何定义路由或如何使用FromQuery
,但我不能让它工作:(。from
和to
也是可选的过滤器。
谢谢你,谢谢
2条答案
按热度按时间vc9ivgsu1#
路由无效,因为它在查询部分包含两个问号和一个未转义的斜杠“/”。可能的有效路由可能是:
为了使用查询字符串参数(?f={from}&to={to}),可在参数前注明
[FromQuery]
ubof19bj2#
Route
中的值不正确,它不应该包含查询参数和?
符号。类似的东西将适用于像/v2/config/get_metadata/{name}?from={from}&to={to}
这样的请求from
和to
是可选的,因为使用了可空类型DateTime?
。您还可以合并HttpGet
和Route
,并获得相同的结果