function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
User MaintenanceUser Maintenance 

RestResponseのレスポンスについて

いつもお世話になっております。

掲題の件、初歩的な質問で申し訳ありませんがご回答のほどよろしくお願いいたします。

今回、Apex Rest を使用し、開発を行っています。
戻り値はJSONを想定しており、正常時とエラー時で戻り値が異なる為、RestResponseを使用しています。

以下、簡単なソースです。
    @HttpDelete
    global static void doDelete(){
      //戻り値
      RestResponse res = RestContext.response;

   //エラー時オブジェクト
      ErrorResult er;

         ・
     ・
         ・

   //ユーザーの削除を行う.
      CalloutResult r = model.deleteUser(id);
        if(r.result_code != 204){
            //失敗
            er = new ErrorResult(r.code,r.message);
            res.responseBody = Blob.valueOf(JSON.serialize(er));
            res.statusCode = r.status_code;
            return;
        }
      
          ・
          ・
          ・
}

ユーザーを削除するメソッドなのですが、まず、削除対象のIDを検索しています。
検索結果が0件の場合はHttpStatusを404で、ResponseBodyをErrorResultクラスのJSONで
返却しようとしています。
しかし、実際にはHttpStatus404で、ResponseBodyが、[{"errorCode":"NOT_FOUND","message":"The requested resource does not exist"}]
が返却されます。
returnの直前までDebugで確認が取れており、ErrorResultの値は正しくなっています。

結果が正しくErrorResult型にならないのはなぜでしょうか?
どなたか教えていただけると有難いです。

Marty C.Marty C.

初めまして。常と申します。

UserさんはどんなクライエントでRESTメッセージを送信していますか。別な同様質問[1]を見つけました。その質問の回答はHTTPヘッダにアクセストークンの追加です。

[1]: 別な同様質問 (https://developer.salesforce.com/forums/ForumsMain?id=906F00000009AOWIA2)

User2 MaintenanceUser2 Maintenance
常様

ご回答ありがとうございます。クライアントは最終的にはJavaから呼ぶ想定ですが、現在は疎通テストを行っているため、curlコマンドや、FirefoxのRestClientを使用しています。
アクセストークンの件、常、対応済みでおりますが、質問内容のような現象になってしまいます。
Marty C.Marty C.
Userさん、お返信は遅くなってすみません。

UserさんはSession IDとアクセストークンのどちらのほうを使用していますか。Session IDを使って私はcURLでもRESTClientでも正しいレスポンスを受け取ることができました。