สร้าง API Proxy Server สำหรับไม่มีรหัส

0
126


เมื่อทำงานกับเครื่องมือที่ไม่มีรหัสเช่น Bubble การจัดการกับข้อมูล API มักจะเป็นประสบการณ์ที่น่าผิดหวัง คุณอาจพบว่าตัวเองอยู่ในสถานการณ์ที่คุณต้องการจัดการหรือแปลงข้อมูลก่อนที่คุณจะสามารถใช้งานได้อย่างมีประสิทธิภาพในแอปพลิเคชันของคุณ น่าเสียดายที่ข้อ จำกัด ของเครื่องมือที่ไม่มีรหัสสามารถทำให้งานนี้รู้สึกเหมือนการต่อสู้ที่ยากลำบาก คุณอาจพบว่าตัวเองหันไปหาวิธีแก้ปัญหาที่ซับซ้อนหรือแม้แต่เลิกโดยสิ้นเชิง

แต่ถ้ามีวิธีที่จะเอาชนะข้อ จำกัด เหล่านี้ล่ะ? ป้อนแนวคิดของพร็อกซีเซิร์ฟเวอร์ ด้วยการตั้งค่าพร็อกซีเซิร์ฟเวอร์คุณสามารถสกัดกั้นการโทร API ที่ทำโดยแอปพลิเคชันที่ไม่มีรหัสของคุณและทำการแปลงข้อมูลได้ทันที ซึ่งหมายความว่าคุณสามารถตอบสนอง API ดิบปรับเปลี่ยนให้เหมาะกับความต้องการของคุณแล้วส่งผ่านไปยังเครื่องมือที่ไม่มีรหัสสำหรับการรวมที่ราบรื่น

ตอนนี้ความคิดในการตั้งค่าพร็อกซีเซิร์ฟเวอร์อาจฟังดูน่ากลัวโดยเฉพาะอย่างยิ่งหากคุณไม่คุ้นเคยกับการเข้ารหัส แต่นี่เป็นข่าวดี: มันไม่น่ากลัวอย่างที่คิด ด้วยวิธีการและเครื่องมือที่ถูกต้องคุณสามารถสร้างเซิร์ฟเวอร์พร็อกซี API ที่ไม่มีเซิร์ฟเวอร์ที่จัดการกับการแปลงข้อมูลให้คุณโดยไม่จำเป็นต้องมีโครงสร้างพื้นฐานที่ซับซ้อนหรือการจัดการเซิร์ฟเวอร์

ในบทความนี้เราจะแนะนำคุณทีละขั้นตอนในการสร้างเซิร์ฟเวอร์พร็อกซี API แบบไร้เซิร์ฟเวอร์ที่เหมาะสำหรับแอปพลิเคชันที่ไม่มีรหัสของคุณ พร็อกซีเซิร์ฟเวอร์นี้จะทำหน้าที่เป็นสะพานเชื่อมระหว่างแพลตฟอร์มที่ไม่มีรหัสและ API ของคุณช่วยให้คุณสามารถปรับแต่งการตอบสนอง API เพื่อให้เหมาะกับความต้องการของแอปพลิเคชันของคุณ ในตอนท้ายของคู่มือนี้คุณจะมีโซลูชันที่แข็งแกร่งซึ่งช่วยเพิ่มขีดความสามารถในการพัฒนาที่ไม่มีรหัสและปลดล็อควิธีการใหม่ในการทำงานกับข้อมูล API

ดังนั้นเรามาดำน้ำและดูว่าคุณสามารถควบคุมการแปลงข้อมูล API ของคุณได้อย่างไรและปรับปรุงเวิร์กโฟลว์การพัฒนาที่ไม่มีรหัสของคุณ

คนงาน Cloudflare

คนงาน Cloudflare เป็นอินสแตนซ์การประมวลผลแบบคลาวด์แบบไม่มีเซิร์ฟเวอร์ … กล่าวอีกนัยหนึ่งคุณสามารถเรียกใช้จาวาสคริปต์ในคลาวด์และไม่ต้องจัดการกับการตั้งค่าเซิร์ฟเวอร์ของคุณเอง และส่วนที่ดีที่สุดคือ CloudFlare มีแผนฟรี

ลงทะเบียนสำหรับ CloudFlare

อันดับแรก ลงทะเบียนบัญชี ด้วย CloudFlare ถ้าคุณยังไม่มี คุณสามารถข้ามการลงทะเบียนเว็บไซต์และคลิก“ สำรวจผลิตภัณฑ์อื่น ๆ ”

สร้าง Good day World Employee

ทางด้านซ้าย NAV คลิก“ คนงานและหน้า” ที่กึ่งกลางของหน้าจอคลิก“ สร้างคนงาน”

ต่อไปคุณจะสร้าง Good day World Employee ที่เรียบง่าย คลิก“ ปรับใช้” ที่ด้านล่างของหน้าจอและในที่สุดคลิก URL ที่ปรับใช้ซึ่งมีลักษณะเช่น: https://hello-world-calm-bird-9b18.mad-be1.employees.dev/

ยินดีด้วย! พนักงานสวัสดีโลกของคุณกำลังทำงานอยู่

พร็อกซีและหม้อแปลง

ตั้งค่าพร็อกซี

กลับมาที่หน้าจอด้วย URL ของคนงานคลิก“ แก้ไขรหัส”

ทางด้านซ้ายจะเป็นรหัส Good day World ลบรหัสนี้และแทนที่ด้วย:

addEventListener('fetch', occasion => {
  occasion.respondWith(handleRequest(occasion.request));
});

async perform handleRequest(request) {
  const apiKey = request.headers.get('Authorization');

  if (!apiKey) {
    return new Response('Lacking Authorization header', { standing: 401 });
  }

  const profileKey = request.headers.get('Profile-Key');

  let apiUrl;
  let requestOptions;

  if (request.technique === 'GET') {
    // Get the API endpoint from the question parameter
    apiUrl = new URL(request.url).searchParams.get('endpoint');

    if (!apiUrl) {
      return new Response('Lacking endpoint parameter', { standing: 400 });
    }

    // Decode the URL-encoded endpoint
    apiUrl = decodeURIComponent(apiUrl);

    requestOptions = {
      technique: 'GET',
      headers: {
        'Authorization': apiKey,
        'Content material-Sort': 'software/json',
      },
    };

    if (profileKey) {
      requestOptions.headers('Profile-Key') = profileKey;
    }
  } else if (request.technique === 'POST' || request.technique === 'PUT') {
    // Parse the request physique as JSON
    const requestBody = await request.json();

    apiUrl = requestBody.endpoint ?? new URL(request.url).searchParams.get('endpoint');

    if (!apiUrl) {
      return new Response('Lacking endpoint parameter', { standing: 400 });
    }

    requestOptions = {
      technique: request.technique,
      headers: {
        'Authorization': apiKey,
        'Content material-Sort': 'software/json',
      },
      physique: JSON.stringify(requestBody),
    };

    if (profileKey) {
      requestOptions.headers('Profile-Key') = profileKey;
    }
  } else {
    return new Response('Methodology not allowed', { standing: 405 });
  }

  attempt {
    // Make the API request with the suitable choices
    const response = await fetch(apiUrl, requestOptions);

    // Parse the response JSON
    const information = await response.json();

    // Remodel the information construction based mostly on the endpoint
    const transformedData = transformData(information, apiUrl);

    // Return the remodeled information because the response with the returned response.standing
    return new Response(JSON.stringify(transformedData), {
      standing: response.standing,
      headers: { 'Content material-Sort': 'software/json' },
    });
  } catch (error) {
    // Deal with any errors
    return new Response('Error occurred', { standing: 500 });
  }
}

perform transformData(information, apiUrl) {
  const endpoint = apiUrl.cut up('/').pop();

  change (endpoint) {
    case 'endpoint':
      // Test if the information is an object with a "information" property
      if (information && typeof information === 'object' && 'information' in information) {
        // Remodel the information construction
        const transformedData = {
          information: (information.information),
        };
        return transformedData;
      }
      break;
    case 'consumer':
      // Test if the consumer endpoint is an object
      if (information && typeof information === 'object') {
        // Add within the timestamp
        const transformedData = {...information};
        information.myAddedDate = (new Date()).toISOString();
        return transformedData;
      }
      break;
    // Add extra circumstances for different endpoint checks if wanted
    default:
      break;
  }

  // Return the unique information if no transformation is required
  return information;
}

คลิก“ บันทึกและปรับใช้” ที่มุมขวาบน

มีสองฟังก์ชั่นหลักในรหัสนี้: handleRequest และ transformData

ที่ handleRequest ฟังก์ชั่นพร็อกซ์ของการเรียก API คุณไม่จำเป็นต้องแก้ไขฟังก์ชั่นนี้

ที่ transformData เป็นฟังก์ชั่นที่ทำการแปลงข้อมูลและคุณจะต้องอัปเดตสิ่งนี้เพื่อจัดการกับความต้องการข้อมูลของคุณ เพิ่มเติมเกี่ยวกับเรื่องนี้ในภายหลัง

คุณอาจพบรหัสนี้ใน คนอื่น ๆ

สำหรับตอนนี้ลองเรียกใช้รหัสนี้

เรียกใช้พร็อกซี – รับ

รายการที่จำเป็นต้องมีบางอย่างในการทดสอบพร็อกซีเซิร์ฟเวอร์ด้วยโซเชียล API ของ Ayrshare แต่คุณยินดีที่จะใช้ API ใด ๆ :

เริ่มต้นด้วย GET โทรหาไฟล์ /จุดสิ้นสุดของผู้ใช้– ในแผงกลางที่ส่วนท้ายของ URL ของคุณ

?endpoint=httpspercent3Apercent2Fpercent2Fapp.ayrshare.compercent2Fapipercent2Fuser

นี่คือค่า URL ที่เข้ารหัสซึ่งแปลเป็น https://app.ayrshare.com/api/consumer

ตัวอย่างเช่น:

https://hello-world-calm-bird-9b18.mad-be1.employees.dev?endpoint=httpspercent3Apercent2Fpercent2Fapp.ayrshare.compercent2Fapipercent2Fuser

ด้านล่างรายการ URL คลิก“+ เพิ่มส่วนหัว” ป้อนคีย์“ การอนุญาต” และค่า“ ผู้ถือ API_KEY” ที่ API_KEY เป็นคีย์ API ของคุณที่พบในแผงควบคุม Ayrshare

ตอนนี้คลิกปุ่ม“ ส่ง”

คุณควรเห็นแผงด้านขวา🟢 200 หากทุกอย่างสำเร็จ ใดๆ GET อาจใช้ URL (ตรวจสอบให้แน่ใจว่า url encode) ด้วยพร็อกซีเซิร์ฟเวอร์

เรียกใช้พร็อกซี – โพสต์

คุณสามารถทำได้ POST คำขอ

เปลี่ยน URL เพื่อเรียก จุดสิ้นสุดการวิเคราะห์ ซึ่งดึงการวิเคราะห์ในโพสต์ แก้ไขพารามิเตอร์การสืบค้นของ URL คนงานของคุณเป็น:

?endpoint=httpspercent3Apercent2Fpercent2Fapp.ayrshare.compercent2Fapipercent2Fanalyticspercent2Fpost

นอกจากนี้ตรวจสอบวิธี HTTP จาก Get to Submit (The Dropdown)

ในกล่องข้อความ“ ร่างกาย” ป้อน:

{
    "id": "bBbtup4YDUm6agvSkQA4",
    "platforms": (
        "fb"
    )
}

ที่ไหน id คือ ID ของก โพสต์ที่เผยแพร่ซึ่งคุณสามารถทำได้อย่างง่ายดายในส่วน “โพสต์” ของแดชบอร์ด Ayrshare

หลังจากป้อนข้อมูลทั้งหมดให้คลิก“ ส่ง” การตอบสนองควรเป็นอีกครั้ง🟢 200

การแปลงข้อมูล

ส่วนสุดท้ายคือการแปลงข้อมูลเป็นความต้องการของคุณ

ในส่วนรหัสด้านบน:

perform transformData(information, apiUrl) {
  const endpoint = apiUrl.cut up('/').pop();

  change (endpoint) {
    case 'endpoint':
      // Test if the information is an object with a "information" property
      if (information && typeof information === 'object' && 'information' in information) {
        // Remodel the information construction
        const transformedData = {
          information: (information.information),
        };
        return transformedData;
      }
      break;
     case 'consumer':
      // Test if the consumer endpoint is an object
      if (information && typeof information === 'object') {
        // Add within the timestamp
        const transformedData = {...information};
        information.myAddedDate = (new Date()).toISOString();
        return transformedData;
      }
      break;
    // Add extra circumstances for different endpoint checks if wanted
    default:
      break;
  }

  // Return the unique information if no transformation is required
  return information;
}

ภายใน คำสั่งเปลี่ยนระบุจุดสิ้นสุดของจุดสิ้นสุดที่แตกต่างกันเช่น “โพสต์” หรือ “การวิเคราะห์” จากนั้นแปลงข้อมูลตามสิ่งที่ปลายทางนั้นส่งคืน ในตัวอย่างนี้หากจุดสิ้นสุดสิ้นสุดใน “จุดสิ้นสุด” และหากมีฟิลด์ที่เรียกว่า “ข้อมูล” ในวัตถุข้อมูลให้เปลี่ยนวัตถุเป็นอาร์เรย์และส่งคืนข้อมูลที่แปลงแล้ว ในตัวอย่างที่สองหากจุดสิ้นสุดสิ้นสุดใน“ ผู้ใช้” และ“ ข้อมูล” เป็นวัตถุให้เพิ่มการประทับเวลาวันที่ปัจจุบัน myAddedDate ไปยังวัตถุ

คุณอาจเพิ่มจุดสิ้นสุดอื่น ๆ ลงในคำสั่งสวิตช์และการกระทำบนจุดสิ้นสุดเหล่านั้นเช่นการเปลี่ยนค่าทั้งหมดในวัตถุจากตัวพิมพ์ใหญ่เป็นตัวพิมพ์เล็ก

บทสรุป

หากคุณพอใจกับเครื่องมือที่ไม่มีรหัส แต่ต้องการนำโครงการของคุณไปสู่อีกระดับการเรียนรู้ JavaScript เล็กน้อยอาจเป็นตัวเปลี่ยนเกม ด้วยการรวม JavaScript เข้ากับเวิร์กโฟลว์ที่ไม่มีรหัสของคุณคุณสามารถปลดล็อกโลกใหม่ของความเป็นไปได้และปรับแต่งเครื่องมือของคุณให้เหมาะกับความต้องการของคุณได้ดีขึ้น

แต่ความยุ่งยากในการตั้งค่าและการบำรุงรักษาเซิร์ฟเวอร์ล่ะ? นั่นคือสิ่งที่ฟังก์ชั่น Serverless เข้ามาด้วยการคำนวณแบบไม่มีเซิร์ฟเวอร์คุณสามารถเรียกใช้รหัส JavaScript ของคุณโดยไม่ต้องกังวลเกี่ยวกับโครงสร้างพื้นฐานพื้นฐาน ซึ่งหมายความว่าคุณสามารถมุ่งเน้นไปที่การเขียนและการปรับใช้รหัสของคุณในขณะที่แพลตฟอร์ม Serverless ดูแลส่วนที่เหลือ

ตอนนี้ถ้าคุณไม่เคยเขียนบรรทัดของ JavaScript มาก่อนความคิดของการดำน้ำอาจดูน่ากลัว แต่อย่ากลัว! ด้วยการทดลองเล็กน้อยและความช่วยเหลือของแหล่งข้อมูลออนไลน์เช่น CHATGPT คุณสามารถเร่งความเร็วได้อย่างรวดเร็ว เริ่มต้นเล็ก ๆ ลองแนวคิดพื้นฐานบางอย่างและค่อยๆสร้างทักษะของคุณ

ด้วยการรวมพลังของฟังก์ชั่น JavaScript และ Serverless เข้ากับเครื่องมือที่ไม่มีรหัสที่มีอยู่ของคุณคุณสามารถปรับปรุงเวิร์กโฟลว์ของคุณทำงานซ้ำ ๆ โดยอัตโนมัติและสร้างโซลูชันที่ซับซ้อนมากขึ้น ดังนั้นอย่ากลัวที่จะก้าวออกจากเขตความสะดวกสบายของคุณและโอบกอดโลกแห่งรหัส ด้วยความพยายามและคำแนะนำเล็กน้อยคุณจะประหลาดใจที่ชีวิตของคุณในดินแดนที่ไม่มีรหัสง่ายขึ้น

LEAVE A REPLY

Please enter your comment!
Please enter your name here