在使用自动生成的打字稿客户端时如何包含cookie?

时间:2019-10-02 03:28:00

标签: typescript cookies autorest

我正在使用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,以查看是否可以使用任何可用的凭据类型。

[更新]:

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

1 个答案:

答案 0 :(得分:0)

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

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