그누보드(영카트) RESTful api 개발에 대한 소고 > 앱개발

앱개발

그누보드(영카트) RESTful api 개발에 대한 소고 정보

그누보드(영카트) RESTful api 개발에 대한 소고

본문

요즘 프론트/백엔드 를 분리하여 개발하는게 트렌드이다 보니,

그누보드 rest api 가 자주 등장합니다.

 

저도 나름 이 부분에 오랫동안 고민한적이 있어 몇가지 의견을 공유해봅니다.

 

그누보드는 일단 프론트/백엔드가 분리된 코드가 아닙니다. restapi 를 개발할려면, 한땀한땀 새로 작업해야 합니다.

가급적 그누보드 core(코어가 있나요???) 를 건드리지 않고 작업을 해야 하는데, 이게 참 쉽지 않습니다. 그렇다고 처음부터 만들기엔 내용이 방대합니다.(버리기 아까운 라이브러리들이...)

 

 

이미 몇분은 restapi 를 자체 개발한것같고,, 개발을 진행하고 계신분들도 있는것 같네요.

 

그누보드 restapi  를 개발하기 전이라면, 아래 부분들을 고민해봐야 합니다.

 

1. php composer 를 사용해도 되는가? 사용하면 안되는가? 

첫번째 이슈입니다. 그누보드는 PHP초보자들을 위해 쉽게 배우고, 쉽게 확장 가능한 플랫폼으로 성장해왔습니다. 

장점이지만, 단점이기도 합니다. 상당수의 php개발자들은 php composer를 사용할수 없는 환경에 있습니다.

 

  A) composer 를 사용해도 된다.

    ==> PHP로 된 유명한 rest api 프레임웍을 쓰면 됩니다.(라라벨, 라라벨루멘, cakephp, ci, slim4, etc..)

           저라면 slim4를 쓸것 같네요. 가볍고, 확장성이 띄어납니다.

  B) composer 를 사용할수 없다.

   ==> 대부분 이런 환경일거라 봅니다. ftp로 소스를 업로드하는 순간 rest api가 동작해야 합니다. 

 

2. Rewrite(Router) 를 설정해야 합니다.

 - restful 에 부합할려면, /api/board/10 같은 형태로 url 이 구성되어야 합니다. 앞에 설명한것처럼, 프론트/백엔드가 구분되어 작업한다면, 프론트 개발자는 restful api 에 익숙할것입니다. /bbs/api/ajax.common.php 형태의 ajax api 는 설득하기 어렵습니다.  "프론트 개발자가 그누보드를 싫어하는  100가지 이유" 에서  101가지 이유로 바뀔겁니다.

 - 그나마 기존에 짧은글 주소 적용을 위해 apache .htaccess  설정이나 nginx  설정이 추가되어 1번보다는 쉽게 적용이 가능합니다.

 

3. 보안을 고민해야 합니다. sql injection, xss, cslf 등...

 - 기존에 그누보드 필터링 함수는 사용하는게 좋습니다. 

 - filter_input 함수도 가급적 사용해주세요.

 

4. db wrapper 를 써야 합니다.

 - 프레임웍을 쓰면, 프레임웍이 제공해주는 좋은 클래스가 있습니다. 그걸 쓰면 됩니다. orm 도 써볼만하죠.

 - 3의 보안 항목은 대부분 db query 에서 발생합니다. 그것도 그누보드의 고전적 쿼리 방식에서 발생합니다.

    PDO의 bind 파라메타는 반드시 사용해야 합니다. 그누보드의 core에는  없으니, 새로 하나 만들어야 합니다. 

  - 제발 PDO 쓰세요. plz... 

    

5. PHP 버전은 7.x 쓰세요... 

  - 이제 8.x의 시대입니다. 아직 안정화 기간이 있으니, 7.4 정도면 적당합니다.

  

6. 응답 데이타구조는 JSON 입니다.

  - request 는 꼭 JSON일 필요는 없습니다. 파일업로드도  처리해야 하니 form encoded 도 나쁘지 않습니다. 문서화만 잘해두면 프론트 개발자가 알아서 잘 보냅니다.

 

7.  문서화는 필수입니다.

  - Apidoc 도 좋고, markdown 문서도 좋고, insomnia(https://insomnia.rest/) 도 좋습니다. 중요한건, 프론트 개발자가 공유되는 문서니까, 소스랑 문서는 항상 싱크되어야 한다는것입니다. api 문서부터 업데이트하고 소스 작업을 하는 방식은 매우 좋은 습관입니다.(마치 TDD 그것처럼)

   - 추가로 api 문서는 공유가 편한것이 좋습니다.  insomnia은 쉐어링이 편합니다.  

   - 저는 phpstorm 의 rest-client 를 좋아합니다.(이건 다음에 다시 한번 공유하도록 하겠습니다.)

   - 요즘은 openapi2 document 를 보고 있습니다. 

 

8. 모던한 코드를 만들어야 합니다.

  - 이제 Class 는 PHP에서 보편적 코딩입니다. 더 이상 고전 방식으로 코딩해서는 발전이 없습니다.

     클래스 코딩이 한번 해보시면 소스 재활용 측면에서 좋다는걸 알게 될겁니다.(내가 진짜 개발자가 된 것 같은 기분을 느끼게 해줍니다. 진짜에요.. 해보세요.)  

   - PSR을 준수하면 좋습니다. composer를 안쓰더라도 클래스 코딩을  api 만드는김에 공부해보세요.

   - MVC는 별거 없습니다. 역활을 쪼개고, 역활에 맞는 파일명과 클래스명을 사용하는것입니다. 거창한 철학이 있지만, 코드가 손에 익으면 그때 책을 보면서 배우시면 됩니다. 디자인 패턴도 마찬가지에요. 모른다고 코딩 못하는건 아니니까요.(조금 무시 받을수는 있어요)

 

9.  그외의 잡설

  -  개인용도로 만들던 restapi 일부를 공개할까,  유료로 판매할까 고민중입니다.(노력에는 보상이..)

 

 

  

 

 

 

 

 

 

 

 

 

 

 

 

공감
0

댓글 8개

1. 예전에 라온보드처럼,  모든 라이브러리를 로컬에서 만든다음, 한번에 올리면 됩니다. 그러면 Composer 필요없을 것 같습니다.
3. 4.  ORM을 꼭 써야죠.  그래서 DB도 손을 봐야..
7. OpenAPI로 한번해 봤는데,  이것 공부하는 것도 시간이 걸리네요. https://sir.kr/so_app/1914
  마크다운 에디터로 만들어 봤습니다. https://docker.apachezone.com/blog/146
  조금씩 업데이트하는 중입니다.
9. 판매를 하세요.  다큐먼트와 간단한 프런트엔드 호함되면 더 좋겠죠.
감사합니다.
1. 이게 디렉토리와 파일수가 늘어나면, 사용자들이 복잡해 합니다. "이 솔루션은 복잡한거구나"  플러그인형태로 그냥 파일 몇개 추가하면 동작하는게 바람직합니다.

7. 고생 많으십니다.^^

9. 그럴까요? 진짜 그래도 될까요?
그런데 앱이나 PWA등 정도를 할려고 한다면, 결국은 국내의 서버 호스팅 환경도 변경되어야겠죠.

초창기에는 한번에 올리고,  웹호스팅업체에서는 composer정도는 지원해 줘야 되고, 

앱을 할려고 한 다면, VPS정도로 가야죠..
  사용하는게 정답인데, 그누보드는 composer 를 사용하지 않습니다.
composer 기반이었다면, 벌써 restapi 도 추가되었겠죠.

이런  환경(그누보드 에코시스템) 에서 추가할려니 괴로운점이 생깁니다.
쓰기만하면 진짜 많은 그누보드의 단점들이 해결되거든요
네 맞습니다. 이게 그누보드다운(?) 개발방법이죠.  의존관계까지  있으면 파일수가 좀 많아지는 단점이 있습니다.
전체 756 |RSS
앱개발 내용 검색

회원로그인

진행중 포인트경매

  1. 참여3 회 시작24.04.25 20:23 종료24.05.02 20:23
(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT