Given how extensible Sitecore is, it’s very common to integrate Sitecore with 3rd party services such as RESTful APIs. Over the years, I’ve worked on many Sitecore implementations that integrated with RESTful APIs implemented by client developers as well as other companies. When working through such integrations, some of the common challenges I’ve faced are networking related. In my experience, 3rd party RESTful APIs are implemented to give consumers access to sensitive data. This being the case, the APIs themselves are protected behind logins and/or network security.
On your local environment, you could confirm you have access a given API by simply pinging it or using PowerShell Invoke-WebRequest. The problem is, neither of these work in a Sitecore PaaS instance.
So to help confirm that a Sitecore PaaS instance has access to a given API, I’ve used this script (which I found here) inside the Sitecore PSE ISE:
# First we create the request.
$HTTP_Request = [System.Net.WebRequest]::Create('https://third-party-api.com/')
# We then get a response from the site.
$HTTP_Response = $HTTP_Request.GetResponse()
# We then get the HTTP code as an integer.
$HTTP_Status = [int]$HTTP_Response.StatusCode
If ($HTTP_Status -eq 200) {
Write-Host "Site is OK!"
}
Else {
Write-Host "The Site may be down, please check!"
}
# Finally, we clean up the http request by closing it.
If ($HTTP_Response -eq $null) { }
Else { $HTTP_Response.Close() }
If the URL you are testing is accessible, you’ll get “Site is OK!”. Otherwise, you’ll get “The Site may be down, please check!”.
If you have other ways of testing access to 3rd party API’s from within a Sitecore PaaS instance, please share in the comments. Also, let me know if you see any gaps in this approach.