> ## Documentation Index
> Fetch the complete documentation index at: https://v3.selectfromuser.com/llms.txt
> Use this file to discover all available pages before exploring further.

# API 설정

SAPP에서는 데이터베이스 쿼리나 외부 API 연결을 앱에서 호출할 수 있는 API로 만들 수 있습니다. 프로젝트의 API 메뉴에서 API를 생성하고, 실행할 쿼리와 접근 권한을 설정할 수 있습니다.

## API 만들기

프로젝트의 API 메뉴에서 새 API를 생성합니다.

### Path

앱에서 API를 호출할 때 사용할 경로를 입력합니다.

```text theme={null}
notice-list
```

설정한 Path는 SAPP API 호출 주소의 일부로 사용됩니다.

### Resource

API에서 사용할 리소스를 선택합니다. SQL API를 만드는 경우 프로젝트에 연결된 MySQL 등의 데이터베이스 리소스를 선택합니다. 리소스가 없다면 먼저 리소스 메뉴에서 데이터베이스를 연결해야 합니다.

### Query YAML

API 요청으로 받을 변수를 정의합니다. 입력값이 없는 경우 다음과 같이 작성합니다.

```yaml theme={null}
_variables: {}
```

요청값이 필요한 경우 변수 이름과 형식을 정의합니다.

```yaml theme={null}
_variables:
  keyword:
    type: string
    required: false
```

정의한 변수는 SQL에서 사용할 수 있습니다.

### SQL

API가 호출될 때 실행할 SQL을 작성합니다.

```sql theme={null}
SELECT *
FROM notices
WHERE deleted_at IS NULL
ORDER BY created_at DESC
```

Query YAML에 정의한 요청값이 있다면 SQL 파라미터로 연결하여 사용합니다.

## 요청 로그와 처리 로그

API 실행 과정에서 확인할 내용을 요청 로그와 처리 로그에 설정할 수 있습니다.

* 요청 로그: API 요청과 관련된 내용을 기록합니다.
* 처리 로그: SQL 실행이나 API 처리 과정의 내용을 기록합니다.

각 항목에는 치환 가능한 값을 사용할 수 있습니다.

## 접근 권한 설정하기

ACL에서 API의 공개 범위를 설정합니다.

### public

인증 없이 호출할 수 있는 API로 설정합니다.

### private

인증된 회원만 호출할 수 있는 API로 설정합니다. `private`을 선택하면 Required roles에서 API 호출에 필요한 역할을 지정할 수 있습니다. 프로젝트의 기본 역할인 `Admin`, `User`와 프로젝트에 추가한 커스텀 역할을 선택할 수 있습니다.

### use accessToken from ENV

프로젝트 환경변수에 저장된 accessToken을 API 호출에 사용합니다. 이 옵션을 사용하는 경우 현재 선택한 `dev` 또는 `prod` 환경의 값이 적용됩니다.

## 환경변수 설정하기

프로젝트에서는 API에 사용할 값을 환경변수로 관리할 수 있습니다. 환경변수는 `key`와 `value`로 구성되며, `dev`와 `prod` 환경을 나누어 저장합니다.

* dev: 개발 및 테스트 환경
* prod: 실제 운영 환경

변수 추가를 눌러 항목을 추가하고 key와 value를 입력한 뒤 저장합니다.

## API 테스트하기

설정한 API는 테스트 호출 화면에서 바로 확인할 수 있습니다.

### API Path

호출할 API의 Path를 입력합니다.

### Environment

테스트에 사용할 환경을 선택합니다.

* `prod`
* `dev`

선택한 환경에 따라 API 주소와 환경변수가 적용됩니다.

### Full path

현재 설정을 기준으로 전체 API 호출 주소가 표시됩니다.

```text theme={null}
https://apihub.selectfromuser.com/v3/fn/{API_PATH}
```

### Authorization

API 호출에 사용할 인증 방식을 선택합니다.

#### pk\_project

프로젝트 키 방식으로 호출합니다. 필요한 경우 `secretKey`를 입력하거나 환경변수에 저장된 accessToken을 사용합니다.

#### sessionToken

회원 로그인 후 발급된 sessionToken을 Bearer Token으로 전달합니다.

```text theme={null}
Authorization: Bearer {sessionToken}
```

`private` API나 역할이 지정된 API를 테스트할 때 사용할 수 있습니다.

### Request body JSON

API에 전달할 요청 본문을 JSON 형식으로 입력합니다.

```json theme={null}
{
  "title": "새 공지사항",
  "content": "공지사항 내용입니다."
}
```

요청값이 없다면 빈 객체를 입력합니다.

```json theme={null}
{}
```

### 테스트 호출

테스트 호출을 선택하면 현재 설정으로 API를 실행합니다. 호출 결과는 Response JSON에서 확인할 수 있습니다.

## API 목록 확인하기

생성한 API는 프로젝트의 API 목록에서 확인할 수 있습니다. 목록에서는 다음 정보를 확인할 수 있습니다.

* API Path
* API 유형
* ACL
* 생성 시각
* 수정 시각

API 유형은 SQL API와 Proxy API 등으로 구분되며, ACL은 `public` 또는 `private`으로 표시됩니다.
