Salesforce에서는 REST API를 통해 오브젝트를 생성, 조회, 수정, 삭제하는 다양한 HTTP 메서드를 제공합니다.
또한 Upsert라는 매우 강력한 기능도 함께 지원되며, 외부 시스템과의 연동에 유용하게 사용됩니다.
✅ 1. GET – 데이터 조회
| 항목 | 설명 |
|---|
| 목적 | 오브젝트 또는 레코드의 데이터를 조회할 때 사용 |
| 예시 1 | /sobjects/Account/001Hu00000ABC123 → 특정 Account 조회 |
| 예시 2 | /query?q=SELECT+Name+FROM+Account → SOQL 쿼리 실행 |
| 응답 | JSON 형식의 레코드 정보 반환 |
✅ 2. POST – 레코드 생성
| 항목 | 설명 |
|---|
| 목적 | 새 레코드 생성 |
| 예시 | /sobjects/Account |
Body:
{
"Name": "New Company"
}
| 응답 | 생성된 레코드 ID 반환 |
✅ 3. PATCH – 레코드 수정 & Upsert
🔹 기본 사용 (수정)
| 항목 | 설명 |
|---|
| 목적 | 기존 레코드의 일부 필드만 수정 |
| 예시 | /sobjects/Account/001Hu00000ABC123 |
| 특징 | 전체가 아닌 일부 필드만 전송 가능 (PATCH는 PUT보다 유연함) |
🔹 Upsert (존재하면 수정, 없으면 생성)
PATCH 요청에 External ID 필드 기반 경로를 사용하면 Upsert가 동작합니다.
PATCH /services/data/v58.0/sobjects/Order__c/External_Order_Id__c/ORD-001
{
"Status__c": "Confirmed",
"AccountId": "001Hu00000XXXXXX"
}
External_Order_Id__c = 'ORD-001'인 레코드가 있으면 수정
- 없으면 새로 생성
❗ Upsert 시 주의사항: External ID 필드 필수
Upsert 시 경로에 사용되는 필드는 반드시 External ID로 지정된 필드여야 합니다.
✅ External ID란?
- Salesforce가 레코드를 식별하기 위해 사용하는 필드
- 오브젝트 설정에서 필드 생성 또는 수정 시 체크 가능
- Text, Number, Email 타입만 가능
✅ 사용 가능한 필드 타입
| 타입 | External ID 지정 가능 |
|---|
| Text | ✅ |
| Number | ✅ |
| Email | ✅ |
| Lookup, Picklist, Date 등 | ❌ |
❌ 일반 필드로는 Upsert 불가
예:
PATCH /sobjects/Order__c/OrderNumber__c/ORD001
→ ❌ 실패 (OrderNumber__c가 External ID가 아니면 사용 불가)
✅ 4. DELETE – 레코드 삭제
| 항목 | 설명 |
|---|
| 목적 | 레코드 삭제 |
| 예시 | /sobjects/Account/001Hu00000ABC123 |
| 응답 | 상태 코드 204 (No Content) 반환 |
✅ 5. PUT – 전체 덮어쓰기 (잘 안 씀)
| 항목 | 설명 |
|---|
| 목적 | 전체 레코드 교체 |
| Salesforce에서는 | 거의 사용되지 않음. 대부분 PATCH로 처리 |
✅ 기타 기능
| 기능 | 경로 |
|---|
| SOQL 쿼리 실행 | /query?q=SELECT+Name+FROM+Account |
| SOSL 검색 | /search?q=FIND+{John} |
| 오브젝트 정보 조회 | /sobjects/Account/describe |
| 오브젝트 목록 | /sobjects |
🔐 인증 방식 요약
| 방식 | 설명 |
|---|
| OAuth 2.0 Authorization Code | 사용자 로그인 기반 |
| OAuth 2.0 Client Credentials | 백엔드 시스템 간 통신용 |
| Username-Password Flow | 테스트/비추천 (보안상 취약) |
📌 전체 요약표
| 메서드 | 기능 | 특징 |
|---|
GET | 조회 | 쿼리 또는 ID 기반 조회 |
POST | 생성 | 새 레코드 삽입 |
PATCH | 수정 / Upsert | 일부 필드 수정 / External ID 기반 Upsert |
DELETE | 삭제 | 레코드 제거 |
PUT | 전체 수정 | 거의 안 씀 |
🧠 정리
PATCH + External ID 경로를 사용하면 Upsert 가능
- 일반 필드는 Upsert에 사용할 수 없음
- External ID는 반드시 Text / Number / Email 필드에 직접 지정해야 함
- API 통합 시 외부 시스템의 고유 ID를 External ID로 맞추는 것이 매우 중요