是否可以将 delete/put 请求发送到受保护 api 的 Azure AD 或使用 aadHttpClientFactory 获取 jwt 令牌作为字符串

Is it possible to send delete/put requests to a Azure AD secured api or get jwt Token as String using aadHttpClientFactory

我有一个自定义的 Api,我使用 Azure AD 保护它,就像下面的教程一样: https://docs.microsoft.com/en-us/sharepoint/dev/spfx/use-aadhttpclient 太棒了。

现在我有以下代码可以向我的自定义 API 发出 GET 请求(有效):

 this.context.aadHttpClientFactory
.getClient('MY_API_URL')
.then((client: AadHttpClient) => {
  console.log(AadHttpClient.configurations.v1); 

  return client
    .get(
      `MY_API_URL/SOME_ROUTE`,
      AadHttpClient.configurations.v1
    );
})
.then(response => {
  var res=  response.json();
  return res;
}).then( (res: any[]) => {
...

HERE I WOULD LIKE TO GET MY TOKEN

});

所以这是我期望的工作方式。 但是 aadHttpClientFactory 只支持 GET 和 POST 请求

现在我的想法是用 jQuery 发出一些 PUT/DELETE 请求并使用我在上面获得的 Bearer 令牌(通过邮递员及其工作进行测试)。 但后来我意识到,我不会那么容易得到令牌。 当我 console.log(AadHttpClient.configurations.v1) 我只得到这个:

当然,我可以将我的 API 更改为使用 POST 而不是 PUT/DELETE,但这会很丑陋 有没有人知道如何将令牌作为字符串来使用它执行自定义请求?

AadHttpClient supports the fetch(url, configuration, options) method, where options can include all of the request configuration options supported by the Fetch API.

因此,要发出 DELETE 请求,您需要执行以下操作:

client
    .get(
      `MY_API_URL/SOME_ROUTE`,
      AadHttpClient.configurations.v1,
      {
          method: 'DELETE'
      }
    );

我现在解决了。 也许我的回答会对以后的人有所帮助。 根据 philippe Signoret 的回答,这是 fetch() 函数。 我必须像下面这样使用它:

        this.context.aadHttpClientFactory
        .getClient(api_url)
        .then((client: AadHttpClient) => {
          return client
            .fetch(
              MY_URL,
              AadHttpClient.configurations.v1,
              {
                method: METHOD, //put/DELETE etc.
                headers: [
                  ["Content-Type", "application/json"]
                ],

                body: JSON.stringify({
                  YOUR REQUEST BODY
                })
              }
            )
          });