PAP-API
시작하기 전에
이 문서는 다보리 앱에서 개별 Table 단위의 데이터 처리를 위한 API 구조를 정의하는 방법을 설명하고 있습니다. PAP-API의 구조는 기본적으로 아래와 같습니다.
- Pick(단일 데이터 추출)
- Act(데이터의 추가, 수정, 삭제)
- Page(다수의 row 추출)
API URL 네이밍 규칙
PAP-API 호출시 데이터를 사용하려는 해당 테이블명에 -pick, -act, -page를 붙여 공통적으로 api url을 네이밍하고 있습니다.
예를들어
- item 테이블에서 특정 상품 하나의 정보를 불러오고 싶다면 url은 item-pick
- member 테이블에서 특정 회원의 정보를 불러오고 싶다면 url은 member-pick
- item 테이블에 특정 상품을 추가, 삭제, 수정하고 싶다면 url은 item-act
- member 테이블에서 특정한 status(휴면회원)인 회원 page를 불러오고 싶다면 member-page
- member 테이블에 특정회원을 추가하고 싶다면 member-act (Id : 양수)
- member 테이블에 특정회원을 삭제하고 싶다면 member-act (Id : 음수)
pick-api 사용예제
쿼리의 WHERE 절에 유니크한 값인 Id로 조회하여 단일데이터 및 다수의 레코드를 추출할 수 있는 api입니다.
php
$itemPick = $this->callApiService->callApi([
'url' => 'item-pick',
'data' => [
'Page' => [
['UpdatedMd5' => $updatedMd,]
],
],
'headers' => [
'GateToken' => $this->gateToken['main']
]
]);
javascript
const response = await axios.post('/ajax/get-data', {
url: 'item-pick',
data: {
Page: [
{ Id: parseInt(window.User['SgroupId']) }
]
}
});
act-api 사용예제
Insert, Update, Delete와 같은 데이터 작업을 수행합니다. Id의 값에 따라 Insert(0), Update(양수), Delete(음수)로 구분합니다.
만약 Id값이 0보다 큰 양수라면 해당 Id값에 해당하는 데이터를 Update합니다.
Delete는 다른 필드 없이 ID 값만으로 처리할 수 있습니다.
php
// insert
$itemAct = $this->callApiService->callApi([
'url' => 'item-act',
'data' => [
'Page' => [
[
'Id' => 0, // 0 : insert, 양수: update, 음수 : delete
'IgroupId' => 526,
'ItemCode' => Str::limit($linkproMd5, 21, ''),
'ItemSlug' => $linkproMd5,
'ItemName' => $scrap['ItemName'],
'SalesPrc' => (string)$scrap['SalesPrice'],
]
],
],
'headers' => [
'GateToken' => $this->gateToken['main']
]
// update
$itemAct = $this->callApiService->callApi([
'url' => 'item-act',
'data' => [
'Page' => [
[
'Id' => 4, // 0 : insert, 양수: update, 음수 : delete
'IgroupId' => 526,
'ItemCode' => Str::limit($linkproMd5, 21, ''),
'ItemSlug' => $linkproMd5,
'ItemName' => $scrap['ItemName'],
'SalesPrc' => (string)$scrap['SalesPrice'],
]
],
],
'headers' => [
'GateToken' => $this->gateToken['main']
]
// delete
$itemAct = $this->callApiService->callApi([
'url' => 'item-act',
'data' => [
'Page' => [
[ 'Id' => -4 ] // 0 : insert, 양수: update, 음수 : delete
],
],
'headers' => [
'GateToken' => $this->gateToken['main']
]
javascript
const response = await axios.post('/ajax/get-data', {
url: 'item-act',
data: {
Id : 0,
ItemCode: $(item_form).find('#item-code-txt').val(),
IgroupId: Number($(item_form).find('#igroup-id-txt').data('id')),
ItemName: $(item_form).find('#item-name-txt').val(),
SubName: $(item_form).find('#sub-name-txt').val(),
ItemSlug: $(item_form).find('#item-slug-txt').val(),
}
});
const response = await axios.post('/ajax/get-data', {
url: 'item-act',
data: {
Id : 3,
ItemCode: $(item_form).find('#item-code-txt').val(),
IgroupId: Number($(item_form).find('#igroup-id-txt').data('id')),
ItemName: $(item_form).find('#item-name-txt').val(),
SubName: $(item_form).find('#sub-name-txt').val(),
ItemSlug: $(item_form).find('#item-slug-txt').val(),
}
});
const response = await axios.post('/ajax/get-data', {
url: 'item-act',
data: {Id : -3}
});
page-api 사용예제
하나의 SELECT 쿼리로 테이블의 레코드를 2차원 리스트 형태로 가져옵니다.
Query, Asc, Desc, Limit, Offset 등의 파라미터를 통해 request할 data의 필터링을 설정합니다.
php
$this->callApiService->callApi([
'url' => 'app-guest-page',
'data' => [
'PageVars' => [
'Query' => "app_name = '$appName' and is_on_use = 1",
'Limit' => 1,
]
],
'headers' => [
'GateToken' => $this->gateToken['main']
]
javascript
let response = await get_api_data('setting-search-page', {
QueryVars: {
QueryName: 'igroup',
FilterName: 'dbr_igroup.id',
},
PageVars: {
Limit: 9999,
Offset: 0,
}
})
// get_api_data(url, data)
No Comments