1

我有一个自定义 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,但这会非常难看有没有人知道我如何将令牌作为字符串来使用它进行自定义请求?

4

2 回答 2

2

AadHttpClient支持该fetch(url, configuration, options)方法,其中options可以包含Fetch API支持的所有请求配置选项。

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

client
    .get(
      `MY_API_URL/SOME_ROUTE`,
      AadHttpClient.configurations.v1,
      {
          method: 'DELETE'
      }
    );
于 2019-11-01T15:15:43.797 回答
0

我现在解决了。也许我的回答会在以后对某人有所帮助。根据 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
                })
              }
            )
          });
于 2019-11-04T14:54:18.307 回答