그누보드 5 API 9/13 일 썸네일과 사용자라우터 분리 등 정보
그누보드 5 API 9/13 일 썸네일과 사용자라우터 분리 등본문
지난 며칠동안 썸네일과 토큰 오류 사용자 라우터 쪽을 작업했습니다.
썸네일
썸네일은 게시글 조회, 게시글 목록 API 에서
thumbnail 키의 src 에 주소가 출력됩니다.
API 데모 - 게시글 조회 free , wr_id 191
tthumbnail 함수와 매개변수가 동일합니다.
ThumbnailService 클래스내 createThumbnail 함수입니다.
기존 썸네일 함수에서 바뀐점
* 이미지마다 필요한 메모리를 계산하여 추가 할당합니다.
* 썸네일 생성 실패시 기존함수는 원본이미지 이름을 반환했지만 createThumbnail 는 false 를 리턴합니다.
정적 멤버함수라서
사용은 이렇습니다.
$thumb_name = ThumbnailService::createThumbnail ($주소포함파일이름, $원본파일경로, $저장경로, $썸네일가로, $썸네일세로);
가로사이즈 기준으로 생성하기 때문에 세로크기는 옵션입니다.
코드링크
기존 썸네일 함수를 가져와 쓰다보니 몇가지 문제가 있었습니다.
템플릿버전에서는 몇개 오류나도 Warning 로그 이후 no img 를 출력합니다.
하지만 PHP8 에서 GD 함수들은 이상한 이미지파일들에 대해 ValueError 를 발생시키는데
슬림프레임워크에서 바로 중단시켜서 api 응답자체를 못하는 일이 생겼습니다.
그래서 try catch 문으로 변경하여 ValueError 를 넘겼습니다.
공식문서에 없길래 문서화 안되었다고 그쪽 저장소에 올렸습니다
PHP 8 부터는 파일, 스트림등 외부에서 읽어오는것들에 대해 공통으로 발생할 수있는 오류라고 합니다.
답변 구글번역.
https://github.com/php/doc-en/issues/3714
PHP 문서 관리자는 스트림쪽에만 설명 적혀있고 개별 함수에 추가설명이 필요한지 고민하고 계시네요.
2. 사용자 라우터 추가
그누보드 5 API 는
그누보드폴더/api/v1 에 있습니다.
변경점들
사용자가 훅이라던지 자기만의 api 를 추가하려고 하면 둘곳이 없고
게다가 라우터 주소도 버전이 한가지만 되고있었습니다.
대게 API 를 전환한다거나 하면 기존것을 그대로 두고 새 API로 이전하게됩니다.
api 밑에 Plugin 폴더를 두어 폴더 하나가 하나의 플러그인이 됩니다.
그누보드
- api
- Plugin - 사용자 제작 api 폴더
- v1 - 그누보드 5 api
플러그인 폴더에
Router 폴더 밑의 php 파일들을 인클루드 하게 되어있습니다.
api/index.php
라우터에서 주소를 나누어 필요한 컨트롤러 모듈등 자유롭게 호출하여 사용하게 됩니다.
개별 플러그인에서 컨트롤러에 openapi doc 을 추가하면
API 문서 스웨거 페이지에도 같이 나옵니다.
그밖에 일반로그인, 소셜로그인에서 발급된 리프레시 토큰 오류를 수정했습니다.
-------
작업 내역
썸네일 추가
https://github.com/gnuboard/gnuboard5/commit/e2145a0a9bca94cb3ae7f4af9bb225c971a6d45b
https://github.com/gnuboard/gnuboard5/commit/696df74d21ef09562aed898aa03543c9147d35c9
사용자 플러그인 폴더 추가
https://github.com/gnuboard/gnuboard5/commit/dd7a0b375ef02ae1f960dd9c0c5b0322b9896b99
리프레시 토큰 수정, seo url 서비스 추가 , 소셜로그인 오류 등 기타 오류 수정
3
댓글 4개
API개발중에 여기 저기 요청, 수정사항이 많아서 바쁘시겠네요 ~
그래도 API가 잘 만들어지면, 앞으로 사용용도는 많을것 같습니다.
고생 많으십니다. 화이팅 하세요!
메리님 고생 많으십니다 공유 할 수있나요?ㅎㅎㅎ
@미니님a 오!!!! 감사합니다~~