Buildable 및 Twilio로 Rest API 구축

17458 단어 saasrestbuildableapi
최근에 나는 Buildable을 발견하고 그것으로 무엇을 할 수 있는지에 깊은 인상을 받았기 때문에 누군가에게 유용할 수 있다고 믿는 내 지식을 공유하기로 결정했습니다. Buildable을 사용하면 Devops 관련 항목 및 API 확장 방법에 대해 걱정할 필요 없이 개발자가 API 개발을 쉽게 할 수 있습니다. 오늘은 주문 생성을 위한 RESTful 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에게 찬사를 보내고 싶습니다.

    좋은 웹페이지 즐겨찾기