API로 받은 데이터, DB업데이트 시 중복체크(1회만 적용) 가능 및 실패체크 채택완료
API로 받은 데이터, DB업데이트 시 중복체크(1회만 적용) 가능 및 실패체크
1. 보내온 데이터가 이미 있는지 확인(이슈번호로 구별)
2, 있으면 종료 exit; 없으면 업데이트(insert DB)
3. 업데이트 시 받은 데이터에서 DB에서 데이터를 가공하여서 insertDB를 할 예정인데 한번 가공 후 다시 가공은 안하도록 하고, 향후 출금이 되었을 때,
** 문의 1번: 보내온 데이터가 실패 했는지 여부를 체크 하려면 어떤 룰케이스를 적용해 둬야할까요? (테스트 상에는 하나하나씩은 문제가 없는데 실제로 여러 건들이 많이 빠르게 또는 일시적으로 몰렸을 때 데이터를 받지 못할 것 대비)
** 문의 2번: 종료하는 방법에 아무것도 안쓰면 되는 것인지 아니면 exit; 를 넣어야 하는지 결과는 같은 것 같은데 어떤 부분이 좋은가요?
경험있는 고수님들의 생각을 여쭙습니다.
현재는 위 기능 구현없이 외부 데이터를 다음과 같이 받아서 업데이트(insert)를 하고 있습니다.
</p>
<p>include_once('../common.php');</p>
<p>// 컨텐츠 타입이 JSON 인지 확인한다</p>
<p>/*if(!in_array('application/json',explode(';',$_SERVER['CONTENT_TYPE']))){</p>
<p> echo json_encode(array('result_code' => '400'));</p>
<p> exit;</p>
<p> }</p>
<p>*/</p>
<p>if(!in_array('application/x-www-form-urlencoded',explode(';',$_SERVER['CONTENT_TYPE']))){</p>
<p> echo json_encode(array('result_code' => '400'));</p>
<p> exit;</p>
<p> }</p>
<p> $arr = $_POST ? $_POST : $_GET;</p>
<p> foreach($arr as $key => $value) {</p>
<p> ${$key} = $value;</p>
<p> } </p>
<p> $data = json_decode(stripslashes($_POST['response']), true);</p>
<p>
답변 3개
1. 데이터가 실패를 했는지 여부를 체크하려면 db상에 Y,N을 기입하는 필드를 넣으시고
데이터가 정상이면 Y, 실패면 N을 넣으시고 상단에서 체크하시면 되지않을까요?
2. 해당 페이지는 api를 받는 페이지 인거 같은데
api를 보내주는 쪽에서 보내기만하고, 결과를 따로 요청하지 않았다면
exit;를 하셔도, 안하셔도 무방합니다.
저는 보통 exit로 해당 페이지의 하단을 종료시킵니다.
그리고 코드상에 post인지 get인지 구분하는 부분이있는데
굳이 그렇게 하지않으시고
</p>
<p>foreach($_REQUEST as $key => $value) {
${$key} = $value;
}</p>
<p>
형태로 간단하게 처리하셔도됩니다.
api를보니 광원 가상계좌 api를 사용하시는듯한데,
궁금하신것 도와드릴테니 쪽지로 연락처남겨주세요.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
1. 데이터가 잘 못 된 부분은 결과 값을 보내게 되어 있는데, 아예 누락 되어 있는 지를 체크를 할 수 있는 지가 고민이었습니다.
2. 결과 값을 보내도록 되어 있습니다. 기본적으로 성공했는지 실패했는지 보내주고 실패 시 10회까지 재전송 하도록 요청합니다. 결과 값을 보내고 나서 exit;를 쓰는 방향으로 해서 구현해보겠습니다.
** 추가적으로 궁금한 점이 생겼는데, 위에서 데이터를 받고 나서 그럼 각 데이터를 가공해서 추가적인 업데이트를 할 계획입니다.(더하기 빼기 곱하기 등등)
이 때 새로운 데이터 테이블에 넣어야 하는지 아니면 기존 테이블에서 그냥 가공해서 필드를 추가해서 넣는 것이 좋은지 궁금합니다.(기존의 질문에 기존 테이블을 이용하면 된다고 해서 그냥 두었는데 이 데이터를 가지고 가공이 좀 많이 될 것 같아서 같은 테이블이 외부에서 SQL insert도 많이 될 것인데 업데이트랑 계속 사용이 되면 문제가 되지 않을까요?)
기존 구현은 매 껀껀마다 잠시는 임시테이블을 만들었다가 결과 값만 member테이블에 업데이트 해줬는데, 향후 수많은 데이터를 주고 받을 때 문제가 되지 않을까 추측합니다.
말씀 주신 내용 참고해서 전체 코드를 한번 구현해보고 문제가 있을 시 추가적으로 도움을 요청해봐야겠습니다.
감사합니다.