【问题标题】:How to include cookies while using autorest generated typescript client?如何在使用 autorest 生成的打字稿客户端时包含 cookie?
【发布时间】:2020-01-31 08:07:16
【问题描述】:

我正在使用AutoRest 为基于 OpenAPI 规范文件的 RESTful API 生成 Typescript 客户端,如下所示:

autorest --typescript --use-internal-constructors --override-client-name=MyApiClient --input-file=API.Swagger.json --namespace=MyApi.Client --typescript.output-folder=C:\One\ts --add-credentials=true

当我通过 CORS 使用生成的 API 客户端进行调用时,它不包含任何 Cookie。

JavaScript fetch 提供了这个结构来包含 cookie:

fetch(uri, { credentials: 'include' })

但我想不出一种方法来使用 AutoRest 生成的 API 客户端实现它。我确实查看了msRest.ts,看看我是否可以使用任何可用的凭据类型。

[更新]:

进一步挖掘后,我发现客户端的选项参数有一个属性withCredentials,可以设置为 true。最终,node_modules\@azure\ms-rest-js\es\lib\xhrHttpClient.js 进行 API 调用。具体来说,这行调用:

xhr.send(request.body === undefined ? null : request.body);

我进行了彻底的调试并确保 withCredentials 设置为 true 但由于某种原因它不发送 cookie!如果我使用 javascript fetch 拨打电话,它会发送 cookie,而 autorest 生成的客户端不会发送 cookie!

【问题讨论】:

    标签: typescript cookies autorest


    【解决方案1】:

    您可能想试试OpenAPI Generator,它同时支持 OpenAPI/Swagger v2 和 v3。 (只有 OpenAPI 规范 v3 支持 cookie 参数)。

    我记得我们已经为 TypeScript 生成器添加了 cookie 参数支持。如果您需要 OpenAPI Generator 社区的帮助,请打开 ticket/issue

    【讨论】:

    • 不确定我是否可以使用 OpenAPI 生成器,因为我们当前的所有构建系统都与 AutoRest 相关联。我去看看。
    猜你喜欢
    • 2018-11-06
    • 2021-06-05
    • 2019-09-30
    • 1970-01-01
    • 2016-11-05
    • 2017-10-03
    • 1970-01-01
    • 2017-07-27
    • 2016-06-18
    相关资源
    最近更新 更多