কার্লের জন্য জেএসওএন ফাইলের মাধ্যমে পেওলড কীভাবে পাস করবেন?


201

curlনিম্নলিখিত কমান্ডটি কার্যকর করে আমি সফলভাবে একটি জায়গা তৈরি করতে পারি :

$ curl -vX POST https://server/api/v1/places.json -d "
  auth_token=B8dsbz4HExMskqUa6Qhn& \
  place[name]=Fuelstation Central& \
  place[city]=Grossbeeren& \
  place[address]=Buschweg 1& \
  place[latitude]=52.3601& \
  place[longitude]=13.3332& \
  place[washing]=true& \
  place[founded_at_year]=2000& \
  place[products][]=diesel& \
  place[products][]=benzin \
"

সার্ভার ফিরে আসে HTTP/1.1 201 Created
এখন আমি একটি JSON ফাইলে পেলোডটি সঞ্চয় করতে চাই যা দেখতে দেখতে এটি দেখতে:

// testplace.json
{
  "auth_token" : "B8dsbz4HExMskqUa6Qhn",
  "name" : "Fuelstation Central",
  "city" : "Grossbeeren",
  "address" : "Buschweg 1",
  "latitude" : 52.3601,
  "longitude" : 13.3332,
  "washing" : true,
  "founded_at_year" : 2000,
  "products" : ["diesel","benzin"]
}

সুতরাং আমি আদেশটি এইভাবে সম্পাদন করার জন্য পরিবর্তন করেছি:

$ curl -vX POST http://server/api/v1/places.json -d @testplace.json

এই ফিরে আসতে ব্যর্থ HTTP/1.1 401 Unauthorized। কেন?


1
এছাড়াও মনে রাখবেন যে আপনি যদি বাইনারি ফাইলগুলি আপলোড করছেন তবে আপনার ব্যবহার করা উচিত --data-binary
আহমেটবি - গুগল :

উত্তর:


329

curlএর ডিফল্ট সামগ্রীর ধরণের সাথে POST অনুরোধগুলি প্রেরণ করে application/x-www-form-urlencoded। আপনি যদি কোনও JSON অনুরোধ প্রেরণ করতে চান তবে আপনাকে সঠিক সামগ্রী টাইপ শিরোনাম নির্দিষ্ট করতে হবে:

$ curl -vX POST http://server/api/v1/places.json -d @testplace.json \
--header "Content-Type: application/json"

সার্ভারটি জসন ইনপুট গ্রহণ করলে তবে তা কাজ করবে। .jsonUrl এর শেষে শুধুমাত্র ইঙ্গিত হতে পারে যে আউটপুট JSON, এটা অগত্যা মানে এই নয় যে এটি JSON হ্যান্ডেল করা হবে ইনপুট । এপিআই ডকুমেন্টেশন আপনাকে দেয় কি না তা একটি ইঙ্গিত দেওয়া উচিত।

আপনি কোনও 401এবং অন্য কোনও ত্রুটি না পেয়ে যাবার কারণ সম্ভবত সার্ভারটি auth_tokenআপনার অনুরোধটি থেকে নিষ্কাশন করতে পারে না ।


8
আমি এর cat file.jsonপরে ব্যবহার করার চেষ্টা করছিলাম -dএবং এটির সাথে সমস্যা হচ্ছিলাম, যতক্ষণ না আমি এই উত্তরটি ব্যবহার করতে পারি তা শিখতে পেলাম @file.json। ধন্যবাদ :)
দয়া

1
নোট করুন যে আপনার যদি একাধিক শিরোনাম প্রয়োজন হয় তবে আপনাকে উবুন্টুতে বাশ পরীক্ষার সময় অন্ততপক্ষে -H/ --headerএকাধিকবার নির্দিষ্ট করতে হবে ।
চেইম এলিয়াহ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.