我正在使用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!
答案 0 :(得分:0)
您可能想尝试OpenAPI Generator,它同时支持OpenAPI / Swagger v2和v3。 (仅OpenAPI规范v3支持cookie参数。)
我记得我们已经为TypeScript生成器添加了cookie参数支持。如果您需要OpenAPI Generator社区的帮助,请打开ticket/issue。