Common Ninja Storage 발표 - 전자 상거래 앱에 스토리지 기능을 추가하기 위한 간단한 API
앱의 기능 중 하나는 우리가 만든 정보 레이블 편집기로 이미지를 만든 다음 나중에 사용할 수 있도록 저장하는 기능입니다. 이를 가능하게 하려면 AWS S3 , Google Cloud Storage , Azure Blob Storage 등과 같은 스토리지 솔루션과 통합해야 했습니다.
어떤 이유로 이 기능을 추가하고 클라우드 스토리지에 파일을 저장하는 가장 좋은 방법이 무엇인지 이해하고 클라이언트와 서버 측 모두에서 기능을 엔드 투 엔드로 코딩하는 것은 결코 쉬운 일이 아니었습니다. 이것은 내가 수십 번 처리 한 것입니다).
스택에는 React, Node 및 AWS S3가 포함됩니다. 그러나 우리가 직면한 몇 가지 문제는 다음과 같습니다.
이것들은 사소한 질문처럼 보이지만, 각각의 질문에 대답하고 그들이 모두 함께 플레이하는 방식을 이해하는 데는 오랜 시간이 걸릴 수 있습니다.
여기서 주요 문제는 클라이언트에서 서버로 이미지를 업로드하는 여러 가지 방법(base64, url, 양식 데이터, blob)이 있다는 것입니다. 앱 개발자로서 원하는 유일한 것은 사용자가 이미지와 파일을 업로드할 수 있도록 하는 것입니다.
❓ 일반 닌자란?
Common Ninja는 개발자가 전자 상거래 플랫폼용 앱을 매우 쉽게 구축하고 수익을 창출할 수 있는 플랫폼입니다. 단일 전자 상거래 API를 사용하면 앱을 한 번 구축하고 Shopify, BigCommerce, Wix, WooCommerce 등과 같은 여러 플랫폼과 통합할 수 있습니다. 앱을 다시 빌드하고 모든 플랫폼에서 개별적으로 작동하도록 할 필요가 없습니다.
또한 Common Ninja는 개발자가 개발 프로세스를 향상하고 결제 및 스토리지 솔루션을 제공하는 데 도움이 되는 일련의 API 및 도구를 제공합니다.
📣 Common Ninja 스토리지 발표
Common Ninja의 스토리지 솔루션은 모든 전자 상거래 앱에 스토리지 기능을 추가하는 새롭고 쉬운 방법입니다.
우리의 API는 간단하며 Common Ninja가 스토리지를 관리하도록 할지 아니면 자체 AWS S3 버킷과 통합할지 결정할 수 있습니다.
docs 에서 API에 대한 자세한 내용을 읽을 수 있습니다.
💻 코드 예
우리는 곧 훨씬 더 많은 기술 문서를 게시할 예정이지만 한편 얼마나 쉬운지 맛보기 위해 Info Labels app(React & NodeJS로 개발)의 간단한 코드 예제가 있습니다.
import React, { useState } from 'react';
function FileUpload() {
const [selectedFile, setSelectedFile] = useState<string | Blob>('');
const changeHandler = (event: any) => {
setSelectedFile(event.target.files[0]);
};
const uploadImage = async () => {
try {
const body = new FormData();
body.append('file', selectedFile);
const req = await fetch('/api/storage/files', {
method: 'POST',
body,
});
const {
data: { url },
} = await req.json();
console.log('File url: ', url);
} catch (e) {
console.error('Could not upload image', e);
}
};
return (
<div>
<input type="file" name="file" onChange={changeHandler} />
<div>
<button onClick={uploadImage}>Upload</button>
</div>
</div>
);
}
다음으로 NodeJS 서버에서 Common Ninja의 API를 사용하여 파일을 업로드하고 URL을 반환합니다.
import { Request, Response, Router } from 'express';
import CommonNinja from '@commonninja/node-sdk';
const router: any = Router();
const { COMMONNINJA_APP_ID, COMMONNINJA_APP_SECRET } = process.env;
function getCommonNinjaClient(req: Request) {
if (!COMMONNINJA_APP_ID || !COMMONNINJA_APP_SECRET) {
throw new Error('Missing Common Ninja app ID or secret key.');
}
return new CommonNinja({
appId: COMMONNINJA_APP_ID,
appSecret: COMMONNINJA_APP_SECRET,
accessToken: req.query.token as string,
env: CommonNinja.envs.production,
logs: true,
});
}
router.post('/api/storage/upload', async (req: Request, res: Response) => {
const client = getCommonNinjaClient(req);
const result = await client.storage.uploadFile(req.body.file);
res.send(result.data);
});
그리고 그게 다야! 노력 없이 사용자가 이미지, 비디오, 문서 및 앱에서 지원하려는 기타 파일을 업로드할 수 있습니다.
📚 더 알아보기
Common Ninja 또는 API를 사용하여 첫 번째 앱을 빌드하는 방법에 익숙하지 않은 경우 이전 기사에서 이에 대해 작성했습니다.
또한 다음 리소스를 사용하여 자세히 알아보고 도움을 받을 수 있습니다.
📜 Common Ninja Docs
💬 Discord Community
Reference
이 문제에 관하여(Common Ninja Storage 발표 - 전자 상거래 앱에 스토리지 기능을 추가하기 위한 간단한 API), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/commonninja/announcing-common-ninja-storage-a-simple-api-for-adding-storage-capabilities-to-e-commerce-apps-2dii텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)