当前位置: 首页 > 知识库问答 >
问题:

OData Swagger.网址生成

璩涛
2023-03-14

在我的Net 6 Web-API项目中,我使用了OData和Swagger(它是在项目创建时自动添加的)。

它可以开箱即用,但Swagger生成的一些URL存在问题。

这是我的OData控制器:

public class UsersController : ODataController
{
    // skipped for brevity

    [EnableQuery]
    public IActionResult Get()
    {
        return Ok(_dbContextRepo.Select<DbModel.User>());
    }

    [EnableQuery]
    public SingleResult<User> Get([FromODataUri] int key)
    {
        return SingleResult.Create(_dbContextRepo.Select<User>().Where(u => u.Id == key));
    }
}

SwaggerUI输出:

当我试图从Swagger运行通过Id获取实体的查询时,由于错误的url而失败。

由于某种原因,Swagger生成查询参数和URL,如上图所示。对于OData,URL必须是这样的(路径参数,https://swagger.io/docs/specification/describing-parameters/):

https://localhost:7250/api/Users/1

在swagger.json参数描述为

我花了一整天想弄清楚。会感激任何帮助的。

共有1个答案

林修雅
2023-03-14

我自己找到了解决办法。我使用的是OData8,似乎没有必要将方法参数标记为[FromataUri]。

[EnableQuery]
public SingleResult<User> Get(int key)
{
    //...
}

没有它Swagger生成正确的链接。

 类似资料:
  • 问题内容: 我在数据库中有几条记录,它们想要形成如下URL: 该会从数据库中拉出。 有什么办法可以在flask中取出吗? 问题答案: 你可以将变量名放在views.py函数中。例如: 为了使数据库信息显示在你的站点上,你需要将参数传递到模板中。因此,在模板中,你将引用以下参数: 然后,当你访问mysite.com/post/anything_here时,“ anything_here”将进入你的函

  • 问题内容: 我想知道这两种URL之间的区别:相对URL(用于图片,CSS文件,JS文件等)和绝对URL。 另外,哪个更好用? 问题答案: 通常,使用相对URL被认为是最佳实践,这样您的网站就不会绑定到当前部署位置的基本URL。例如,它无需修改即可在localhost以及您的公共域上工作。

  • 问题内容: 我试图解析由Bootstrap的Bootpage.js生成的URL,该URL看起来像但JSOUP无法解析它并显示主URL。如何从Bootpage获取正常链接或如何使JSOUP对其进行解析。 解析代码: 问题答案: ( 请参阅下面的UPDATE ,第一个/可接受的解决方案不符合android的要求,但仅供参考。) 桌面解决方案 HtmlUnit似乎无法处理此站点(最近经常发生这种情况)。

  • 问题内容: 我试图在我的JavaScript代码中调用此URL: http://api.addressify.com.au/address/autoComplete?api_key=99acd24a-1c94-49ad-b5ef-6f90d0f126b1&term=1+George+st+t&state=nsw&max_results=5 这是我的JavaScript代码: 我在控制台中遇到跨域U

  • 本文向大家介绍HTML 网址,包括了HTML 网址的使用技巧和注意事项,需要的朋友参考一下 示例 5 这用于应包含URL地址的输入字段。 根据浏览器的支持,url提交时可以自动验证该字段。 一些智能手机可以识别该url类型,并在键盘上添加“ .com”以匹配URL输入。

  • 主要使用场景: 开发者用于生成二维码的原链接(商品、支付二维码等)太长导致扫码速度和成功率下降,将原长链接通过此接口转成短链接再生成二维码将大大提升扫码速度和成功率。 长链接转短链接 $shortUrl = $app->url->shorten('https://easywechat.com'); // ( [errcode] => 0 [errmsg] => ok [sh