Take the 2-minute tour ×
Salesforce Stack Exchange is a question and answer site for Salesforce administrators, implementation experts, developers and anybody in-between. It's 100% free, no registration required.

I found a different question asking, "Can I have a public APEX REST API?" which led to a blog post explaining how to setup a public site to expose a REST API:

  1. Create your REST API in Apex as normal
  2. Create a public site
  3. Configure the public user to have access to the Apex class and any other sObjects

I followed the directions and have a publicly available site, but when I do a GET to the URL the site returns a HTTP 503 error page. My understanding is that shouldn't even be routed through the VF handler.

Webservice code:

@RestResource(urlMapping='/helloWorld/*')
global class RestWebservice {

  @HttpGet
  global static String helloWorld(){
    return 'HelloWorld';
  }

}

URL being queried: https://chale1-developer-edition.na14.force.com/services/apexrest/helloWorld

I have tried:

  • Turning on debug logs for the public site user, but that didn't help as no logs recorded the error.
  • Verified no redirects are configured
  • With and without a header for Accept: application/json
  • Tried on two different dev orgs, on different instances

Answers to questions:

  • I have not built any apps in this org, nor are there any installed packages, so there are no namespaces
  • Trying /services/apexrest/helloWord/blah returned the same response
  • Most of the raw response is just HTML. The headers have content-type of text/html, X-Powered-By: Salesforce.com ApexPages, P3P: CP="CUR OTR STA", cache-control, and nothing else of note

Eventually I would like to have a webhook use this API which is why it needs to be public. What else could cause the service to return a 503?

share|improve this question
    
Can you inspect the raw response for an error? Also append /something to the service endpoint? –  bigassforce Apr 24 at 19:03
    
do you happen to have a namespace on that org? (managed package) –  PJC Apr 24 at 19:07
    
Questions answered and I filled in the URL just in case somebody wants to see the actual response. –  Mike Chale Apr 24 at 19:14

1 Answer 1

up vote 6 down vote accepted

You are using the wrong URL I think

Try this: https://chale1-developer-edition.na14.force.com/test/services/apexrest/helloWorld

EDIT - When I looked at the HTML that came back original URL in Postman, I saw this message:

https://chale1-developer-edition.na14.force.com/test</i> is down for maintenance

So I realized he must have used added a suffix to the Default Web Address in the Site called test. The REST URL includes the default suffix as part of the full URL, so I added that the URL he provided, and it worked...

share|improve this answer
1  
Wow, that worked! Where did you get that from? –  Mike Chale Apr 24 at 19:16
    
could you please explain why "test" should be needed? In the related article the service url shown has not the test you are refering –  Martin Borthiry Apr 24 at 19:18
    
'test' is only needed because he added a suffix to the Default Web Address - if you just create a site and leave that blank, the URL would be as described in the article –  BritishBoyinDC Apr 24 at 19:25
    
That's the name of my site and the default page I configured; I'll try removing those. –  Mike Chale Apr 24 at 19:26
1  
Ah - it was almost namespaces :-) –  metadaddy Apr 24 at 19:57

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.