Buildable 및 Twilio로 Rest API 구축
시작하려면 Buildable 으로 계정을 생성해야 합니다. 이 작업은 Github 계정을 연결하여 수행할 수 있습니다.
워크플로우 생성
app으로 이동하여 새 워크플로를 만듭니다.
원하는 경우 설명을 추가하고 만들기 버튼을 클릭할 수 있습니다.
아래와 같이 본문, 작업 및 응답 탭이 있습니다.
본문: 여기에서 API를 테스트할 때 요청 본문을 전달합니다.
헤더: 인증 토큰과 같은 요청 헤더 추가용
작업: 여기에서 스트라이프, 데이터베이스 통합 등과 같이 즉시 제공되는 다양한 작업을 추가할 수 있습니다. 필요한 경우 일부 로직을 여기에 추가할 수도 있습니다.
응답: 여기에서 몇 가지 논리와 API가 호출될 때 응답으로 반환하려는 항목을 추가합니다.
기능 추가
MongoDB를 사용할 데이터베이스에 주문을 생성하는 새로운 작업을 추가할 것입니다.
새 작업을 클릭하고 MongoDB를 검색하고 문서 삽입을 선택하면 컬렉션에 새 문서를 삽입할 수 있습니다. 아래와 같은 것이 있어야합니다.
여기에서 컬렉션 이름을 "test-order"로 업데이트했습니다.
const { MONGODB_CONNECTION_KEY, collection, ...fieldsToInsert, productId } = input;
여기서 우리는 주문을 생성하기 위해 요청 본문에서 가져올 실행 함수에 productId를 추가합니다.
const product = getProduct(productId)
if (!product) {
return {}
}
제품이 존재하는지 확인하고 없으면 빈 객체를 반환합니다.
const order = {
_id,
createdDate,
createdAt,
name: product.name,
address: "test address",
status: "pending",
productId,
amount: product.amount,
}
const db = await getConnection(MONGODB_CONNECTION_KEY)
const results = await db.collection(collection).insertOne(order)
제품이 존재하면 주문 객체를 생성하여 컬렉션에 삽입합니다.
실행 기능은 마지막에 다음과 같아야 합니다.
const run = async (input) => {
const { MONGODB_CONNECTION_KEY, collection } = input
verifyInput(input)
const { productId } = input
// Write your logic here
const product = getProduct(productId)
if (!product) {
return {}
}
try {
const _id = cleanUUID()
const createdDate = new Date()
const createdAt = createdDate.getTime()
const order = {
_id,
createdDate,
createdAt,
name: product.name,
address: "test address",
status: "pending",
productId,
amount: product.amount,
}
const db = await getConnection(MONGODB_CONNECTION_KEY)
const results = await db.collection(collection).insertOne(order)
return results
} catch (error) {
return {
failed: true,
message: error.message,
data: {
...error.data,
},
}
}
}
그런 다음 실행 기능 아래에 이 코드를 추가합니다.
const products = [
{
id: 1,
productId: 101,
name: "noodles",
amount: 50,
currency: "aed",
},
{
id: 2,
productId: 201,
name: "Pepsi",
amount: 20,
currency: "aed",
},
]
function getProduct(id) {
return products.filter((p) => p.productId === id)[0]
}
그것은 단지 모의 데이터이고 제품이 존재하는지 확인하는 기능입니다.
응답으로 이동하여 응답 탭을 이것으로 업데이트하십시오.
async function response({ body, headers, env, $actions }) {
// Write your logic here
const order = $actions.createOrder;
// create product
if (!order){
return {
status: 404,
body: {}
}
}
const msg = `Your order ${order.insertedId.toString()} is being created successfully`
await notifyUser(msg, 'xxxxxxx', env)
// send SMS/email to tell user order have been created
return {
status: 200, // HTTP Response Status Code
headers: {}, // Response Headers
body: {
...order,
},
}
}
async function notifyUser(msg, mobile, env) {
const axios = require("axios");
const client = require('twilio')(env.TWILIO_ACCOUNT_SID, env.TWILIO_AUTH_TOKEN );
// the form should be your twilio number
await client.messages.create({
to: mobile, body: msg, from: 'xxxxxx' })
}
따라서 여기에서 프로젝트가 비어 있는 경우
$actions.createOrder
의 작업에서 응답을 얻습니다. 다른 제품이 없으면 생성된 주문을 반환하고 주문이 생성되었음을 사용자에게 알리기 위해 SMS를 보냅니다. twilio 자격 증명을 얻으려면 계정을 만들어야 합니다.API 테스트
이제 API를 테스트하려면 본문 탭으로 이동하여 이 스니펫을 추가하세요.
{
"productId": 101
}
이제 저장 버튼을 클릭하여 우리가 한 모든 것을 저장하고 실행 버튼을 클릭하면 다음과 같은 결과가 나타납니다.
{
"acknowledged": true,
"insertedId": "89bebecc38cb4db5ae9b68516ef0eceb"
}
Buildable로 API를 생성하는 것이 얼마나 쉬운지 알 수 있습니다. 이 기사를 즐겼기를 바랍니다. Buildable을 사용하고 친구와 공유하는 것을 잊지 마십시오. 또한 저는 Buildable의 Moe, Paul, Esther에게 찬사를 보내고 싶습니다.
Reference
이 문제에 관하여(Buildable 및 Twilio로 Rest API 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/6igo/building-rest-api-with-buildable-and-twillo-pb5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)