Search code examples
javascripttypescriptsharepointazure-active-directoryhttpclientfactory

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


I have a custom Api which I secured with Azure AD like the following tutorial: https://learn.microsoft.com/en-us/sharepoint/dev/spfx/use-aadhttpclient Thats working great.

now I have the following Code to make a GET request to my custom API (working):

 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

});

So this is working how I expect it to work. But the aadHttpClientFactory only supports GET and POST requests

Now my Idea was to just make some PUT/DELETE requests with jQuery and use the Bearer token I got above (tested with postman and its working). But then I realised, that I won't get the token that easy. When I console.log(AadHttpClient.configurations.v1) I only get this: enter image description here

Sure I could just change my API to use POST instead of PUT/DELETE but that would be pretty ugly Does anyone has an Idea on how I could get the token as a String to do custom requests with it?


Solution

  • I solved it now. Maybe my answer will help someone later. according to philippe Signoret's answer the is the fetch() function. I had to use it like following:

            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
                    })
                  }
                )
              });