ReactJS 및 AWS Lambda를 사용한 Facebook 게시물 미리보기
11513 단어 reactshowdevbeginnersjavascript
즉, URL을 수신하고 메타 태그(특히 열린 그래프 태그)를 가져오고 Facebook을 기반으로 미리 보기를 빌드하는 작은 앱을 빌드하기로 결정했습니다.
이 작업을 수행하기 위해 저는 ReactJS와 AWS Lambda(Netlify에서 호스팅됨)를 선택했습니다.
람다 함수
람다 작업은 매우 간단합니다. URL을 수신하고, 메타 태그를 구문 분석하고 가져와 Open Graph 태그를 찾습니다.
open-graph-scraper npm 패키지는 거의 모든 작업을 완료했으므로 다음은 람다의 최종 코드입니다.
import ogs from "open-graph-scraper";
import getUrl from "get-urls";
import urlParser from "url";
export function handler(event, context, callback) {
const text = event.queryStringParameters.q;
const urls = getUrl(text);
// Return if there is no urls in text
if (!urls.size) {
return callback(null, {
statusCode: 200,
body: JSON.stringify({
text: text,
meta: null,
error: ["Empty url in text"]
})
});
}
// Retrieve first URL in text - urls are already normalized
const url = [...urls][0];
const options = { url };
ogs(options, (error, results) => {
const statusCode = results.success ? 200 : 500;
callback(null, buildResponseObject(statusCode, results, text));
});
}
function getUrlDomain(url) {
const urlObj = urlParser.parse(url);
return urlObj.host;
}
function cleanText(text) {
return text.replace(/(?:https?|ftp):\/\/[\n\S]+/g, "");
}
function buildResponseObject(statusCode, result, text) {
let meta = statusCode === 200 ? result.data : null;
if (meta) {
let images = meta.ogImage;
if (images instanceof Array) {
meta.ogImage = images[0];
}
let domain = meta.ogUrl;
if (domain) {
meta.ogUrl = getUrlDomain(meta.ogUrl);
}
}
const body = {
meta: meta,
text: cleanText(text),
error: statusCode !== 200 ? result.error : null
};
return {
statusCode,
body: JSON.stringify(body)
};
}
프론트엔드
포스트 초반에 언급했듯이 클라이언트 인터페이스를 구축하기 위해 react를 선택했습니다.
사용된 패키지는 다음과 같습니다.
"dependencies": {
"get-urls": "^7.2.0",
"netlify-lambda": "^0.4.0",
"open-graph-scraper": "^3.3.0",
"react": "^16.4.1",
"react-content-loader": "^3.1.2",
"react-dom": "^16.4.1",
"react-scripts": "1.1.4",
"styled-components": "^3.3.2"
},
결과는 다음과 같습니다.
기여
무료이며 오픈 소스입니다!
코드는 hosted on Github이고 할 수 있습니다 see it in action here .
여러분의 피드백을 기다리겠습니다.
감사
Reference
이 문제에 관하여(ReactJS 및 AWS Lambda를 사용한 Facebook 게시물 미리보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hugodias/facebook-post-preview-with-reactjs-and-aws-lambda-38kk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)