تعيين طريقة لوضع في طلبات القضبان XML
-
12-09-2019 - |
سؤال
إذا قمت بذلك:
curl -X POST -H 'Content-type: application/xml' -d '<person>...</person>' 'http://0.0.0.0:3000/people/12?_method=PUT'
أحصل على طلبات "فقط الحصول عليها ووضعها وحذفها". لماذا ا؟ القضبان 2.3.2.
المحلول 2
هذا هو في الواقع خلل في القضبان الإصدارات الأخيرة. الحل هو تمرير طريقة تجاوز طريقة HTTP مع وضع. هام: الاسم الكامل للرأس هو تجاوز HTTP-X-HTTP - تجاوز الأسلوب ولكن القضبان تضيف بادئة HTTP بحيث يمكنك تقليم هذا الجزء.
نصائح أخرى
لوكا صحيحة، تحتاج إلى إرسال رأس x-http-methode مع طلبك. وضع _method = وضعت في جون جون لا يعمل بالنسبة لي. سيبدو سطر أمر Curl الخاص بك مثل هذا:
curl
-H "X-Http-Method-Override: put"
-H "Content-Type: application/json"
-d "{\"user\":{\"email\":\"blah@example.com\"}}"
www.site.com/users/username.json
هناك بضعة أشياء يمكن أن تخطئ.
أولا قبالة، أنت ترسل POST
مع curl
, ، ولكن لديك "السحر" _method
المعلمة على عنوان URL الخاص بك، ويتم ضبطها على PUT
. وبعد بناء على الخطأ، يبدو أن القضبان يأخذ POST
كما نوع الطلب الموثوق. جربه دون ذلك ومعرفة ما يحدث.
في خطأ آخر للمشاة، التوجيه (في config/routes.rb
يمكن تكوينها لعدم السماح POST
طلبات الإجراء الذي تحاول استخدامه.
إذا كنت تستخدم وحدة تحكم مريحة قياسية، فإن هذا أمر جيد، لأنك توصل إلى عضو (/people/12
) أيهما يسمح فقط GET
, PUT
, ، و DELETE
.
سأحاول استخدام curl -X PUT
وإسقاط ?_method=PUT
من طلبك.