如何在请求之前在Swagger中计算AWS签名V4

Yur*_*ri_ 7 amazon-web-services swagger swagger-ui

对于我们的AWS API端点,我们使用AWS_IAM授权并希望从Swagger UI进行调用.要成功拨打电话,必须有2个标题'授权'和'x-amz-date'.为了形成'授权',我们使用aws doc中的以下步骤.我们必须在每次通话授权时更改"x-amz-date".问题是:如何在Swagger中编写脚本来签署请求,每次请求发送到aws 之前都会运行?(我们知道在加载Swagger页面之前如何指定两个标题,但是在每次调用之前应该重新运行此过程).

提前致谢.

feh*_*guy 4

swagger-js中有内置支持添加requestInterceptors 来做到这一点。swagger-ui 项目在底层使用了 swagger-js。

只需创建一个请求拦截器,如下所示:

requestInterceptor: {
  apply: function (request) {
    // modify the request object here
    return request;
  }
}
Run Code Online (Sandbox Code Playgroud)

并将其应用于创建时的 swagger 实例:

window.swaggerUi = new SwaggerUi({
  url: url,
  dom_id: "swagger-ui-container",
  requestInterceptor: requestInterceptor,
Run Code Online (Sandbox Code Playgroud)

在这里,您可以在对象中设置标头request(注意,这不是标准的javascript http 请求对象,请检查它以了解详细信息)。但您确实可以访问此处的所有标头,因此您可以根据需要计算和注入它们。