Проблема с созданием API поверх Devise - PullRequest
0 голосов
/ 02 марта 2011

Я создаю JSON API поверх устройства, чтобы иметь возможность общаться с мобильными устройствами.

Пока все хорошо, я могу создать учетную запись пользователя, чтобы получить auth_token. Но когда я пытаюсь выполнить запрос PUT, у меня возникают некоторые проблемы, например, действие обновления для пользователя. Поведение действительно странное, и я не могу понять, что не так.

curl -i -H "Accept: application/json"  'http://localhost:3000/users' -X PUT -d 'auth_token=A830ALUv7ztTdSfl3qxFgi13BJpEf6VzNYe4yk8rEhVxbYYlOc0YMtTGMxkz&user[name]=plop'

Возвращает

HTTP/1.1 401 Unauthorized
Connection: close
Date: Wed, 02 Mar 2011 06:41:29 GMT
Content-Type: application/json; charset=utf-8
Cache-Control: no-cache
X-UA-Compatible: IE=Edge
X-Runtime: 0.157513
Transfer-Encoding: chunked

{"error":"You need to sign in or sign up before continuing."}

В журналах на сервере я получаю это .... Действительно странно.

Started PUT "/users" for 127.0.0.1 at 2011-03-01 22:41:29 -0800
  Processing by Users::RegistrationsController#update as JSON
  Parameters: {"auth_token"=>"A830ALUv7ztTdSfl3qxFgi13BJpEf6VzNYe4yk8rEhVxbYYlOc0YMtTGMxkz", "user"=>{"name"=>"plop"}}
Completed   in 1ms

Принимая во внимание, что если я изменю только имя значения сообщения от пользователя к примеру из формы, запрос будет работать

HTTP/1.1 200 OK
Connection: close
Date: Wed, 02 Mar 2011 06:43:30 GMT
Content-Type: application/json; charset=utf-8
ETag: "5e1311709931861e469ce2c8a3b2d0e6"
Cache-Control: max-age=0, private, must-revalidate
X-UA-Compatible: IE=Edge
Set-Cookie: _u_session=BAh7CEkiGXdhcmRlbi51c2VyLnVzZXIua2V5BjoGRVRbCEkiCVVzZXIGOwBGWwZvOhNCU09OOjpPYmplY3RJZAY6CkBkYXRhWxFpUGGaQG%2FaX1pAfhpAaRpAexpAGkAaQ1JIiIkMmEkMTAkMDVBeDczV29UdVFEZHQxZ1JjN0NXdQY7AFRJjW9uRGlzcGF0Y2g6OkZsYXNoOjpGbGFzaEhhc2h7BjoLbm90aWNlSSIrWW91IHVwZGF0ZWQgeW91ciBhY2NvdW50IHN1Y2Nlc3NmdWxseS4GOwBUBjoKQHVzZWRvOghTZXQGOgpAaGFzaHsASSIPc2Vzc2lvbl9pZAY7AEYiJTcyNmIyZjJiODZhOTBiNjUwZDlhZmIwMzA5MTRkMTlm--0e15953fd7edecb0e08255349c4e55f1eddc8d81; path=/; HttpOnly
X-Runtime: 0.162436
Transfer-Encoding: chunked

{"redirect":"/","status":"ok"}

Я уточнил, что даже без моего кода (для API) я не могу выполнить этот запрос !!!!

Спасибо за вашу помощь!

1 Ответ

1 голос
/ 02 марта 2011

Я не верю, что Devise обрабатывает вызовы JSON, существует открытая проблема на github , которая запланирована на выпуск 1.3 для решения этой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...