আপনি HTTP অনুরোধের মাধ্যমে কোনও ফাংশন ট্রিগার করতে পারেন, এর জন্য
functions.https ব্যবহার করুন। এটি আপনাকে নিম্নলিখিত কাজ করে এমন HTTP পদ্ধতির মাধ্যমে
সিঙ্ক্রোনাস ফাংশন ইনভোক করতে দেয়: GET, POST, PUT, DELETE এবং
OPTIONS।
এই পৃষ্ঠায় দেওয়া উদাহরণগুলি
স্যাম্পেল ফাংশনের
উপর ভিত্তি করে তৈরি করা হয়েছে, যা আপনি ফাংশন এন্ডপয়েন্টে
HTTP GET অনুরোধ পাঠালে ট্রিগার হয়। sample ফাংশন
বর্তমান সার্ভার টাইম রিট্রিভ করে, URL কোয়েরি
প্যারামিটারে নির্দিষ্ট করা টাইম ফর্ম্যাট করে এবং HTTP রেসপন্সে ফলাফল পাঠায়।
HTTP অনুরোধের মাধ্যমে ফাংশন ট্রিগার করা
HTTP
ইভেন্ট ম্যানেজ করে এমন ফাংশন তৈরি করতেfunctions.https
ব্যবহার করুন। HTTP ফাংশনের ইভেন্ট হ্যান্ডলার
onRequest() ইভেন্ট শোনে,
যা Express ওয়েব ফ্রেমওয়ার্কের
ম্যানেজ করা রাউটার ও অ্যাপে কাজ করে।
Express অনুরোধ ও উত্তর অবজেক্ট ব্যবহার করা
onRequest()-এর আর্গুমেন্ট হিসেবে ব্যবহৃত হয়,
Request অবজেক্ট আপনাকে
ক্লায়েন্টের পাঠানো HTTP অনুরোধের প্রপার্টি অ্যাক্সেস করার সুবিধা দেয় এবং
Response অবজেক্ট আপনাকে
ক্লায়েন্টকে উত্তর পাঠানোর একটি উপায় দেয়।
exports.date = functions.https.onRequest((req, res) => { // ... });
আগে থেকে থাকা Express অ্যাপ ব্যবহার করা
onRequest()-এর আর্গুমেন্ট হিসেবে App ব্যবহার করে, আপনি
HTTP ফাংশনে সম্পূর্ণ Express অ্যাপ পাস করতে
পারবেন। বয়লারপ্লেট কোডকে মিডলওয়্যারে
সরানো যেতে পারে, যেমন দেখানো হয়েছে:
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-এ নিম্নলিখিত বিষয়গুলি এই ক্রমে অন্তর্ভুক্ত থাকে:
- আপনি যে অঞ্চলে (বা অঞ্চলগুলিতে) ফাংশন ডেপ্লয় করেছেন। কিছু প্রোডাকশন ফাংশনের ক্ষেত্রে নেটওয়ার্ক লেটেন্সি কমানোর জন্য লোকেশন স্পষ্টভাবে সেট করতে হতে পারে।
- আপনার Firebase প্রোজেক্ট আইডি
cloudfunctions.net- আপনার ফাংশনের নাম
যেমন, date()-কে ইনভোক করার URLটি দেখতে এইরকম হয়:
https://us-central1-<project-id>.cloudfunctions.net/date
ফাংশন ডেপ্লয় করার সময় অনুমতির ব্যাপারে কোনও সমস্যা হলে, নিশ্চিত করুন যে ডেপ্লয়মেন্ট কমান্ড রান করা ব্যবহারকারীকে উপযুক্ত IAM ভূমিকা অ্যাসাইন করা হয়েছে।
Express অ্যাপ রাউটিংয়ের মাধ্যমে, আপনার সংজ্ঞায়িত অ্যাপের URL পাথে ফাংশনের নাম প্রিফিক্স হিসেবে যোগ করা হয়। যেমন, উপরে দেওয়া Express app-এর উদাহরণে গেটারকে ইনভোক করার URLটি দেখতে এইরকম হয়:
https://us-central1-<project-id>.cloudfunctions.net/widgets/<id>
আপনি যদি ফায়ারওয়াল বা IP ফিল্টারের পিছনে HTTP ফাংশন ইনভোক করেন, তাহলে Google HTTP ফাংশন পরিবেশন করতে যে IP অ্যাড্রেস ব্যবহার করে তা দেখে নিতে পারেন।
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 Buffer ডকুমেন্টেশন দেখুন) |
text/plain |
'আমার টেক্সট' | request.body হল 'আমার টেক্সট' |
application/x-www-form-urlencoded |
'name=John' | 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 |
"POST" |
req.get('x-myheader') |
"123" |
req.query.foo |
"baz" |
req.body.text |
"কিছু" |
req.rawBody |
অনুরোধের র (পার্স না করা) বাইট |
date() ফাংশনের উদাহরণে, ফাংশনটি URL প্যারামিটার এবং
বডি, দু'টিকেই format ভ্যালুর জন্য পরীক্ষা করে, যাতে তারিখ/সময় ফর্ম্যাট ব্যবহার করার জন্য সেট করা যায়:
let format = req.query.format; format = req.body.format;
HTTP ফাংশন বন্ধ করা
সবসময় HTTP ফাংশন send(), redirect(),
বা end() দিয়ে শেষ করুন। অন্যথায়, আপনার ফাংশন চলতে থাকতে পারে এবং সিস্টেম জোর করে সেটি
বন্ধ করে দিতে পারে। এছাড়াও,
সিঙ্ক, এসিঙ্ক ও প্রমিস দেখুন।
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 ফাংশনের সাথে আপনার নিজস্ব কাস্টম ডোমেন ব্যবহার করতে দেয়। Cloud Functions-কে Firebase Hosting-এর সাথে কানেক্ট করা সম্পর্কে আরও জানুন।