আপনি functions.https
ব্যবহার করে একটি HTTP অনুরোধের মাধ্যমে একটি ফাংশন ট্রিগার করতে পারেন। এটি আপনাকে নিম্নলিখিত সমর্থিত HTTP পদ্ধতিগুলির মাধ্যমে একটি সিঙ্ক্রোনাস ফাংশন চালু করতে দেয়: GET
, POST
, PUT
, DELETE
, এবং OPTIONS
৷
এই পৃষ্ঠার উদাহরণগুলি একটি নমুনা ফাংশনের উপর ভিত্তি করে যা ট্রিগার হয় যখন আপনি ফাংশন এন্ডপয়েন্টে একটি HTTP GET
অনুরোধ পাঠান। নমুনা ফাংশন বর্তমান সার্ভারের সময় পুনরুদ্ধার করে, একটি URL ক্যোয়ারী প্যারামিটারে নির্দিষ্ট করা সময়কে ফর্ম্যাট করে এবং HTTP প্রতিক্রিয়াতে ফলাফল পাঠায়।
একটি HTTP অনুরোধ সহ একটি ফাংশন ট্রিগার করুন
HTTP ইভেন্টগুলি পরিচালনা করে এমন একটি ফাংশন তৈরি করতে functions.https
ব্যবহার করুন। একটি HTTP ফাংশনের জন্য ইভেন্ট হ্যান্ডলার onRequest()
ইভেন্টের জন্য শোনে, যা এক্সপ্রেস ওয়েব ফ্রেমওয়ার্ক দ্বারা পরিচালিত রাউটার এবং অ্যাপগুলিকে সমর্থন করে।
এক্সপ্রেস অনুরোধ এবং প্রতিক্রিয়া বস্তু ব্যবহার করে
onRequest()
এর জন্য আর্গুমেন্ট হিসাবে ব্যবহৃত, অনুরোধ অবজেক্ট আপনাকে ক্লায়েন্টের পাঠানো HTTP অনুরোধের বৈশিষ্ট্যগুলিতে অ্যাক্সেস দেয় এবং প্রতিক্রিয়া অবজেক্ট আপনাকে ক্লায়েন্টকে একটি প্রতিক্রিয়া ফেরত পাঠানোর একটি উপায় দেয়।
exports.date = functions.https.onRequest((req, res) => { // ... });
বিদ্যমান এক্সপ্রেস অ্যাপ ব্যবহার করে
onRequest()
এর যুক্তি হিসাবে অ্যাপ ব্যবহার করে, আপনি একটি HTTP ফাংশনে একটি সম্পূর্ণ এক্সপ্রেস অ্যাপ পাস করতে পারেন। দেখানো হিসাবে বয়লারপ্লেট কোড মিডলওয়্যারে সরানো যেতে পারে:
const express = require('express');
const cors = require('cors');
const app = express();
// Automatically allow cross-origin requests
app.use(cors({ origin: true }));
// Add middleware to authenticate requests
app.use(myMiddleware);
// build multiple CRUD interfaces:
app.get('/:id', (req, res) => res.send(Widgets.getById(req.params.id)));
app.post('/', (req, res) => res.send(Widgets.create()));
app.put('/:id', (req, res) => res.send(Widgets.update(req.params.id, req.body)));
app.delete('/:id', (req, res) => res.send(Widgets.delete(req.params.id)));
app.get('/', (req, res) => res.send(Widgets.list()));
// Expose Express API as a single Cloud Function:
exports.widgets = functions.https.onRequest(app);
একটি HTTP ফাংশন আহ্বান করুন
আপনি একটি HTTP ফাংশন স্থাপন করার পরে, আপনি এটির নিজস্ব অনন্য URL এর মাধ্যমে এটিকে আহ্বান করতে পারেন। URL-এ নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে, ক্রমানুসারে:
- যে অঞ্চলে (বা অঞ্চল) আপনি আপনার ফাংশন স্থাপন করেছেন। কিছু প্রোডাকশন ফাংশনকে নেটওয়ার্ক লেটেন্সি কমানোর জন্য স্পষ্টভাবে অবস্থান সেট করতে হতে পারে।
- আপনার ফায়ারবেস প্রকল্প আইডি
-
cloudfunctions.net
- আপনার ফাংশনের নাম
উদাহরণস্বরূপ, date()
আহ্বান করার URLটি দেখতে এইরকম:
https://us-central1-<project-id>.cloudfunctions.net/date
ফাংশন স্থাপন করার সময় আপনি যদি অনুমতি ত্রুটির সম্মুখীন হন, তাহলে নিশ্চিত করুন যে যথাযথ IAM ভূমিকাগুলি স্থাপনার কমান্ড চালাচ্ছেন এমন ব্যবহারকারীকে বরাদ্দ করা হয়েছে।
এক্সপ্রেস অ্যাপ রাউটিং সহ, আপনার সংজ্ঞায়িত অ্যাপের URL পাথগুলিতে ফাংশনের নামটি একটি উপসর্গ হিসাবে যোগ করা হয়। উদাহরণস্বরূপ, উপরের এক্সপ্রেস অ্যাপের উদাহরণে গেটারকে আমন্ত্রণ জানানোর URLটি এইরকম দেখাচ্ছে:
https://us-central1-<project-id>.cloudfunctions.net/widgets/<id>
আপনি যদি একটি ফায়ারওয়াল বা আইপি ফিল্টারের পিছনে HTTP ফাংশনগুলি ব্যবহার করেন, আপনি সেই IP ঠিকানাগুলি সন্ধান করতে পারেন যা Google HTTP ফাংশনগুলি পরিবেশন করতে ব্যবহার করে৷
Cloud Functions সহ মিডলওয়্যার মডিউল ব্যবহার করুন
আপনি যদি কুকি সমর্থন বা CORS এর মতো জিনিসগুলির জন্য মিডলওয়্যার নির্ভরতা ইনজেক্ট করতে চান তবে এইগুলিকে ফাংশনের মধ্যে কল করুন৷ উদাহরণস্বরূপ, CORS সমর্থন সক্ষম করতে, নিম্নলিখিত ব্লক যোগ করুন:
// Enable CORS using the `cors` express middleware. cors(req, res, () => { // ... });
অনুরোধ থেকে মান পড়ুন
নিম্নলিখিত সারণী কিছু সাধারণ পরিস্থিতিতে তালিকাভুক্ত করে:বিষয়বস্তুর প্রকার | রিকোয়েস্ট বডি | আচরণ |
---|---|---|
application/json | '{"name":"John"}' | request.body.name সমান 'John' |
application/octet-stream | 'আমার লেখা' | request.body সমান '6d792074657874' (অনুরোধের কাঁচা বাইট; Node.js বাফার ডকুমেন্টেশন দেখুন) |
text/plain | 'আমার লেখা' | request.body সমান 'আমার লেখা' |
application/x-www-form-urlencoded | 'নাম = জন' | request.body.name সমান 'John' |
এই পার্সিং নিম্নলিখিত বডি পার্সারের দ্বারা করা হয়:
ধরুন আপনার ফাংশনটি নিম্নলিখিত অনুরোধের সাথে কল করা হয়েছে:
curl -X POST -H "Content-Type:application/json" -H "X-MyHeader: 123" YOUR_HTTP_TRIGGER_ENDPOINT?foo=baz -d '{"text":"something"}'
তারপর প্রেরিত তথ্য নিচে বাস্তবায়িত হবে:
সম্পত্তি/পদ্ধতি | মান |
---|---|
req.method | "পোস্ট" |
req.get('x-myheader') | "123" |
req.query.foo | "বাজ" |
req.body.text | "কিছু" |
req.rawBody | অনুরোধের কাঁচা (অপার্স করা) বাইট |
date()
ফাংশনের উদাহরণে, ফাংশনটি ব্যবহার করার জন্য তারিখ/সময় বিন্যাস সেট করার জন্য একটি format
মানের জন্য URL প্যারামিটার এবং বডি উভয়ই পরীক্ষা করে:
let format = req.query.format; format = req.body.format;
HTTP ফাংশন বন্ধ করুন
সর্বদা send()
, redirect()
, বা end()
দিয়ে একটি HTTP ফাংশন শেষ করুন। অন্যথায়, আপনার ফাংশন চলতে চলতে পারে এবং সিস্টেম দ্বারা জোরপূর্বক বন্ধ হয়ে যেতে পারে। এছাড়াও সিঙ্ক, অ্যাসিঙ্ক এবং প্রতিশ্রুতি দেখুন।
Node.js moment
মডিউল ব্যবহার করে সার্ভারের সময় পুনরুদ্ধার এবং ফর্ম্যাট করার পরে, date()
ফাংশনটি HTTP প্রতিক্রিয়াতে ফলাফল পাঠানোর মাধ্যমে শেষ হয়:
const formattedDate = moment().format(`${format}`); functions.logger.log('Sending Formatted date:', formattedDate); res.status(200).send(formattedDate);
Firebase Hosting এর সাথে HTTP ফাংশন সংযুক্ত করা
আপনি Firebase Hosting এর সাথে একটি HTTP ফাংশন সংযোগ করতে পারেন। আপনার Firebase Hosting সাইটের অনুরোধগুলি নির্দিষ্ট HTTP ফাংশনে প্রক্সি করা যেতে পারে। এটি আপনাকে HTTP ফাংশন সহ আপনার নিজস্ব কাস্টম ডোমেন ব্যবহার করার অনুমতি দেয়। Firebase Hosting এর সাথে Cloud Functions সংযোগ করার বিষয়ে আরও জানুন।