0

我正在使用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。

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

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

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

[更新]:

在进一步挖掘之后,我发现客户端的 options 参数有一个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!

4

1 回答 1

0

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

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

于 2019-10-02T14:28:47.670 回答