পোস্ট অনুরোধ

কেন এবং কিভাবে HTTP POST ব্যবহার করে একটি চিত্রের অনুরোধ করতে হয় এই নথিটি বর্ণনা করে৷

ওভারভিউ

আপনি যদি কোডে একটি চিত্রের অনুরোধ করেন, বা আপনার যদি 2K অক্ষরের বেশি একটি URL এর প্রয়োজন হয়, তাহলে আপনাকে HTTP POST ব্যবহার করে আপনার চিত্রের অনুরোধ পাঠাতে হবে। ইনফোগ্রাফিক্স সার্ভার 16K দীর্ঘ পর্যন্ত HTTP POST অনুরোধ সমর্থন করে।

এখানে সবচেয়ে প্রাথমিক ধরণের POST অনুরোধের একটি উদাহরণ রয়েছে: একটি <form> উপাদান ব্যবহার করে:

এই ছবিটি আসলে একটি <iframe> হোস্ট করা একটি পৃষ্ঠা। এখানে ফর্ম কোড আছে:

<form action='https://chart.googleapis.com/chart' method='POST'>
  <input type='hidden' name='cht' value='qr' />
  <input type='hidden' name='chs' value='300x300' />
  <input type='hidden' name='chl' value='This is my QR code'/>
  <input type='submit'  />
</form>

একটি বৈধ POST অনুরোধের প্রতিক্রিয়া একটি PNG চিত্র, একটি GET অনুরোধের প্রতিক্রিয়ার মতোই৷

টিপ: কিছু ব্রাউজার একটি নির্দিষ্ট ইউআরএলে অনুরোধ ক্যাশে করে, তাই আপনি POST প্যারামিটার পরিবর্তন করলেও, ব্রাউজারটি আসলে ইমেজ সার্ভারের জন্য অনুরোধ করবে না। এটি একটি চিত্র পুনরায় লোড করার চেষ্টা করার সময় একটি সমস্যা সৃষ্টি করতে পারে যা প্রায়শই পরিবর্তিত হয় (যা পরীক্ষার সময় সমস্যা হতে পারে)। এটিকে ঘিরে কাজ করার জন্য, POST URL-এর শেষে ?chid= value যোগ করুন, যেখানে প্রতিটি অনুরোধের সাথে value পরিবর্তন হয়: চিত্র সার্ভার এই প্যারামিটারটিকে উপেক্ষা করবে, এবং ব্রাউজার ক্যোয়ারীটি পুনরায় পাঠাবে, এবং কেবল ক্যাশে করা সংস্করণটি পুনরায় লোড করবে না।

POST ব্যবহার করার জন্য অনেকগুলি উপায় রয়েছে এবং সেগুলির সবকটির জন্য পৃষ্ঠা কোডে বা পৃষ্ঠা হোস্ট করা সার্ভারে অতিরিক্ত কোডিং প্রয়োজন৷ POST ব্যবহার করার জন্য, আপনি সাধারণত প্রতিটি ছবির জন্য একটি পৃথক পৃষ্ঠা তৈরি করবেন এবং <iframe> বা <img> ট্যাগ হিসাবে নীচে দেখানো হিসাবে ব্যবহার করে আপনার মূল পৃষ্ঠায় এই পৃষ্ঠাগুলি এম্বেড বা লিঙ্ক করবেন।

এখানে জাভাস্ক্রিপ্ট এবং পিএইচপি উভয়ের সাথে POST ব্যবহারের উদাহরণ রয়েছে।

একটি পোস্ট অনুরোধের জন্য জাভাস্ক্রিপ্ট ব্যবহার করে

একটি JavaScript POST অনুরোধ করার সবচেয়ে সহজ উপায় হল একটি পৃষ্ঠা তৈরি করা যা <input> উপাদানগুলিতে চিত্র ডেটা সহ একটি ফর্ম হোস্ট করে এবং পৃষ্ঠাটি তার onLoad() হ্যান্ডলারে অনুরোধটি পোস্ট করে, এবং পৃষ্ঠাটি চিত্র দ্বারা প্রতিস্থাপিত হবে পিএনজি। যে পৃষ্ঠাটি এই ছবিটি হোস্ট করে সেটিতে একটি <iframe> ব্যবহার করে এই পৃষ্ঠাটি অন্তর্ভুক্ত করা উচিত। এখানে চিত্র পৃষ্ঠার জন্য কোড:

দ্রষ্টব্য: নীচের নমুনায় URL-এ একটি পরিবর্তনশীল মান সেট করা একটি chid প্যারামিটার রয়েছে৷ এটি উপরের টিপে বর্ণিত কারণে ব্রাউজারকে রিফ্রেশ করে। যদি আপনার ছবি প্রায়ই পরিবর্তন না হয়, তাহলে আপনাকে সেই প্যারামিটার যোগ করার দরকার নেই।

post_infographic.html

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <script type='application/javascript'>
    // Send the POST when the page is loaded,
    // which will replace this whole page with the retrieved image.
    function loadGraph() {
      var frm = document.getElementById('post_form');
      if (frm) {
       frm.submit();
      }
    }
  </script>
  </head>
  <body onload="loadGraph()">
    <form action='https://chart.googleapis.com/chart' method='POST' id='post_form'
          onsubmit="this.action = 'https://chart.googleapis.com/chart?chid=' + (new Date()).getMilliseconds(); return true;">  <input type='hidden' name='cht' value='qr' />
      <input type='hidden' name='cht' value='qr' />
      <input type='hidden' name='chs' value='300x300' />
      <input type='hidden' name='chl' value='This is my QR code' />
      <input type='submit'  />
    </form>
  </body>
</html>

আপনি যদি একটি <form> উপাদান ব্যবহার করেন, তাহলে আপনার স্ট্রিংগুলিকে URL-এনকোড করার প্রয়োজন নেই।

এই ছবিটি আপনার হোস্ট পৃষ্ঠায় একটি <iframe> ব্যবহার করে অন্য পৃষ্ঠায় লোড করা যেতে পারে, যেমন:

another_page.html

<iframe src="post_infographic.html" width="300" height="200"></iframe>

একটি পোস্ট অনুরোধের জন্য পিএইচপি ব্যবহার করে

বেশিরভাগ সার্ভার-সাইড ভাষা স্পষ্ট পোস্ট অনুরোধ সমর্থন করে। এখানে পিএইচপি ব্যবহার করে একটি পোস্ট অনুরোধ করার একটি উদাহরণ। এই উদাহরণটি এমন একটি পৃষ্ঠা দেখায় যা 150 র্যান্ডম মান সহ একটি QR কোড তৈরি করে। এটি নিজে ব্যবহার করতে, আপনি আপনার নিজস্ব মান অন্তর্ভুক্ত করতে $qrcode অ্যারে কাস্টমাইজ করবেন।

দ্রষ্টব্য: নীচের নমুনায় URL-এ একটি পরিবর্তনশীল মান সেট করা একটি chid প্যারামিটার রয়েছে৷ এটি উপরের টিপে বর্ণিত কারণে ব্রাউজারকে রিফ্রেশ করে। যদি আপনার ছবি প্রায়ই পরিবর্তন না হয়, তাহলে আপনাকে সেই প্যারামিটার যোগ করার দরকার নেই।

imageserver-image.php

<?php
  // Create some random text-encoded data for a QR code.
  header('content-type: image/png');
  $url = 'https://chart.googleapis.com/chart?chid=' . md5(uniqid(rand(), true));
  $chd = 't:';
  for ($i = 0; $i < 150; ++$i) {
    $data = rand(0, 100000);
    $chd .= $data . ',';
  }
  $chd = substr($chd, 0, -1);

  // Add image type, image size, and data to params.
  $qrcode = array(
    'cht' => 'qr',
    'chs' => '300x300',
    'chl' => $chd);

  // Send the request, and print out the returned bytes.
  $context = stream_context_create(
    array('http' => array(
      'method' => 'POST',
      'content' => http_build_query($qrcode))));
  fpassthru(fopen($url, 'r', false, $context));
?>

এই চিত্রটি এম্বেড করা জাভাস্ক্রিপ্ট উদাহরণের চেয়ে সহজ, কারণ আপনি কেবল একটি <img> ট্যাগ দিয়ে আপনার POST পৃষ্ঠায় নির্দেশ করতে পারেন, যেমনটি এখানে দেখানো হয়েছে:

another_page.html

<img width='300' height='300' src='imageserver-image.php'>