curl json đăng yêu cầu qua thiết bị đầu cuối đến một ứng dụng rails


109

Tôi đang cố tạo người dùng trên ứng dụng rails của mình bằng lệnh curl từ os x terminal. Bất kể tôi định dạng dữ liệu như thế nào, ứng dụng sẽ trả về phản hồi mà không phải trong các xác thực của tôi đã vượt qua.

curl http://localhost:3000/api/1/users.json -i -X POST -d {"user":{"first_name":"firstname","last_name":"lastname","email":"email@email.com","password":"app123","password_confirmation":"app123"}}"

Tôi đã thử mọi biến thể. Tôi đã thử sử dụng [] ngoặc, tôi đã thử user = {data ..} và dường như không có gì hoạt động. Có ý kiến ​​gì không?


Tại sao không chỉ sử dụng $ rails cUser.create :first_name => 'John', :last_name => 'Smith', ...?
coreyward

23
@coryward: Điều đó sẽ đánh bại toàn bộ mục đích của một API.
Wukerplank

nó thực sự đã cho tôi bối rối
chris nắng

Xin chào, Bob có thể đã tìm thấy vấn đề, nhưng trong trường hợp nó có thể giúp được, đây là bài đăng tôi đã tìm thấy ngày hôm qua: squarism.com/2011/04/01/how-to-write-a-ruby-rails-3-rest-api Đó là về XML, nhưng nó có thể hữu ích. Trân trọng.
plang

Câu trả lời:


227

Trước hết, có một "không liên quan" ở cuối lệnh của bạn.

Thử cái này

curl -v \
  -H "Accept: application/json" \
  -H "Content-type: application/json" \
  -X POST \
  -d ' {"user":{"first_name":"firstname","last_name":"lastname","email":"email@email.com","password":"app123","password_confirmation":"app123"}}' \
  http://localhost:3000/api/1/users

Điều đó là vậy đó. Tối qua tôi đã tìm ra rằng nó cần loại-Chấp nhận và Nội dung.
chris sun

Xin chào, tôi đang gọi một tập lệnh như sau: abc.com/?a=4&b= {"x": "y"}. Bạn có thể cho tôi biết nó sẽ trông như thế nào trong thiết bị đầu cuối curl ??
user739711

hmmm trong trường hợp của tôi, tôi cần thiết để bao quanh URL mục tiêu với dấu ngoặc kép
Jonathan Lin

1
Tôi đã có thể loại bỏ chuyển đổi -v (dài dòng) và -H "Chấp nhận: ..." ở trên và nó vẫn hoạt động tốt đối với tôi.
Dan

2
nghĩ rằng bạn có thể loại bỏ -X POST cũng kể từ khi ur sử dụng -d
Luke W
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.