প্রকল্প সম্পর্কে
OkHttp হলো JVM, Android এবং GraalVM-এর জন্য একটি HTTP ক্লায়েন্ট লাইব্রেরি। এর README অনুযায়ী, এটি ডিফল্টভাবে দক্ষ হতে ডিজাইন করা হয়েছে: HTTP/2 সমর্থন একই হোস্টে অনুরোধগুলিকে একটি সকেট শেয়ার করতে দেয়, সংযোগ পুলিং HTTP/2 অনুপলব্ধ থাকলে অনুরোধের বিলম্ব কমান, স্বচ্ছ GZIP ডাউনলোড সাইজ কমায়, এবং প্রতিক্রিয়া ক্যাশিং পুনরাবৃত্ত অনুরোধের জন্য সম্পূর্ণ নেটওয়ার্ক এড়িয়ে যায়।
লাইব্রেরিটিকে দুর্বল নেটওয়ার্কে সহনশীল বলা হয়। এটি সাধারণ সংযোগ সমস্যাসমূহ নিঃশব্দে হাত করে, এবং যখন কোনো সার্ভিসের একাধিক IP ঠিকানা থাকে, তখন এটি প্রথম সংযোগ ব্যর্থ হলে বিকল্প ঠিকানা চেষ্টা করে, যা README-তে IPv4+IPv6 এবং redundant ডেটা সেন্টারে থাকা সার্ভিসগুলির জন্য উপযোগী হিসেবে উল্লেখ করা হয়েছে। এতে TLS 1.3, ALPN এবং সার্টিফিকেট পিনিং সহ আধুনিক TLS বৈশিষ্ট্য সমর্থিত, এবং প্রশস্ত সংযোগের জন্য Fallback-এ কনফিগার করা যায়।
API-তে fluent builders এবং অপ্রতিবর্তনযোগ্য request/response অবজেক্ট ব্যবহার করা হয়, এবং সঙ্কোচনব্লকিং কল এবং callbacks সহ অ্যাসিঙ্ক্রোনাস কল উভয়ই সমর্থন করে। README-তে একটি URL ডাউনলোড এবং সার্ভারে JSON পাঠানোর সংক্ষিপ্ত উদাহরণ রয়েছে, এবং আরও জানতে recipes পেজে ইঙ্গিত দেওয়া হয়েছে।
OkHttp আধুনিক HTTP স্পেসিফিকেশন মেনে চলে, যার মধ্যে রয়েছে RFC 9110 (HTTP সেম্যান্টিক্স), RFC 9111 (ক্যাশিং), RFC 9112 (HTTP/1.1), RFC 9113 (HTTP/2), RFC 6455 (WebSockets) এবং WHATWG server-sent events স্পেসিফিকেশন। যেখানে স্পেক্স অস্পষ্ট, সেখানে আধুনিক ইউজার এজেন্টের আচরণ মেনে চলে। README-তে বলা হয়েছে যে OkHttp জটিলভাবে কনফিগারেবল হওয়া থেকে সচেতনভাবে বিরত থাকে, বিশেষ করে ভুল সার্ভার বা অবৈধ পরিস্থিতির সমাধানের জন্য, এবং GET-এ body সাপোর্ট করে না বা ক্যাশকে বিকল্প ইমপ্লিমেন্টেশনসহ ইন্টারফেস হিসেবে প্রকাশ করে না—এমন কিছু উদাহরণসূচক সীমাবদ্ধতা তালিকাভুক্ত করেছে।
প্রয়োজনীয়তা: Android 5.0+ (API লেভেল 21+) এবং Java 8+। Android-এ এতে AndroidX Startup ব্যবহৃত হয়; যদি মনিফেস্টে ইনিশিয়ালাইজার অক্ষম করা থাকে, তবে অ্যাপ্লিকেশনের onCreate-তে OkHttp.initialize(applicationContext) কল করতে হবে। এতে উচ্চ-কার্যক্ষম I/O-র জন্য Okio এবং Kotlin স্ট্যান্ডার্ড লাইব্রেরি নির্ভরতা রয়েছে। README-তে security সমস্যার বিরুদ্ধে রক্ষা হিসেবে OkHttp আপডেট রাখার পরামর্শ দেওয়া হয়েছে, এবং এতে প্ল্যাটফর্মের অন্তর্নির্মিত TLS ইমপ্লিমেন্টেশন ব্যবহার করা হয়, Java প্ল্যাটফর্মগুলিতেঐচ্ছিক Conscrypt সমর্থন আছে যখন Conscrypt প্রথম সিকিউরিটি প্রোভাইডার। একটি legacy 3.12.x ব্রাঞ্চ Android 2.3+ এবং Java 7+ সমর্থন করে, কিন্তু সেই প্ল্যাটফর্মগুলিতে TLS 1.2 নেই এবং তা ব্যবহার করা উচিত নয়।
বিতরণ Maven Central-এর মাধ্যমে, ভার্সন বিন্যাসের জন্য BOM, R8/ProGuard নিয়ম, এবং snapshot builds সহ। OkHttp একটি Kotlin Multiplatform প্রকল্প হিসেবে প্রকাশিত; Maven প্রকল্পগুলিতে okhttp-jvm এবং okhttp-android মধ্যে বেছে নিতে হয় কারণ Maven প্রকল্পে okhttp আর্টিফ্যাক্ট খালি থাকে। OkHttp 5.2+ Java 9 মডিউল ইমপ্লিমেন্ট করে, এবং README-তে স্থিতিশীল পাবলিক মডিউলগুলির তালিকা রয়েছে: okhttp3, okhttp3.brotli, okhttp3.coroutines, okhttp3.dnsoverhttps, okhttp3.logging, okhttp3.sse, okhttp3.tls, okhttp3.urlconnection, mockwebserver3 এবং এর JUnit 4/5 ভার্সন।
MockWebServer HTTP, HTTPS এবং HTTP/2 ক্লায়েন্ট পরীক্ষার জন্য অন্তর্ভুক্ত। README-তে এটিকে প্রধানত অভ্যন্তরীণ পরীক্ষা এবং OkHttp ক্লায়েন্ট ব্যবহারকারী অ্যাপ্লিকেশনের মৌলিক পরীক্ষার জন্য ব্যবহৃত হিসেবে বর্ণনা করা হয়েছে, পূর্ণ-বৈশিষ্ট্যপূর্ণ স্ট্যান্ডঅ্যালোন HTTP টেস্টিং লাইব্রেরি নয়, এবং নতুন বৈশিষ্ট্যের জন্য সক্রিয়ভাবে উন্নয়ন করা হচ্ছে না বলে উল্লেখ করা হয়েছে; ব্যবহারকারীরা এটিতে উত্তের্ণ হতে পারে এবং MockServer-এর মতো বিকল্প বিবেচনা করতে পারে। GraalVM native image builds স্বয়ংক্রিয়ভাবে কাজ করে বলে উল্লেখ করা হয়েছে, okcurl মডিউল একটি উদাহরণ। প্রকল্পটি Apache License 2.0 অনুযায়ী লাইসেন্সপ্রাপ্ত, Square, Inc.-এর কপিরাইট।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.