是否可以将 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
})
}
)
});
我有一个自定义的 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
})
}
)
});