Tôi đang cố triển khai API REST với Play 2.0 (Scala) nhưng tôi bị kẹt trong phương thức POST. Làm cách nào để tải trọng tải từ đối tượng Yêu cầu? Tôi đã không tìm thấy bất kỳ tài liệu nào về nó và đã không thể tìm ra từ mã nguồn.Cách tải trọng từ POST trong Play 2.0
Trả lời
Bạn sẽ có thể làm như sau:
def index = Action { request =>
val body = request.body
}
Và cũng những thứ như:
def index = Action { request =>
val name = request.queryString.get("name").flatMap(_.headOption)
Ok("Hello " + name.getOrElse("Guest"))
}
Cảm ơn, nó hoạt động! Tôi đã đặt một 'println (request.body)' và tôi nhận được những thứ như 'AnyContent (Bản đồ (body -> WrappedArray (pepe), pepe -> WrappedArray (null)))', trông giống như một khởi đầu tốt . – jglatre
tôi phải làm điều đó hơi khác nhau (có lẽ tôi đang trên một phiên bản mới hơn của codebase):
javascript của tôi:
$(document).ready(function(){
$.post("/ping", {one: "one", two: "two" },
function(data){
console.log(data); //returns {"one":"one","two":"two"}
})
});
tuyến đường của tôi:
POST /ping controllers.Application.ping()
tôi phương pháp điều khiển:
def ping() = Action{ request =>
val map : Map[String,Seq[String]] = request.body.asFormUrlEncoded.getOrElse(Map())
val one : Seq[String] = map.getOrElse("one", List[String]())
val two : Seq[String] = map.getOrElse("two", List[String]())
Ok(
toJson(JsObject(List("one"->JsString(one.first), "two"->JsString(two.first))))
)
}
Tôi giả định này sẽ thay đổi trong phiên bản cuối cùng.
có một cái nhìn tại this article trên playlatam
cũng kiểm tra this question trên google danh sách
cho java (với một java_name tên param):
String name = request().body().asFormUrlEncoded().get("java_name")[0];
cho scala (với một scala_name tên param):
def name = request.body.asFormUrlEncoded.get("scala_name")(0)
Cảm ơn bạn đã liên kết! – jglatre
H ere là những gì tôi đã làm.
val map : Map[String,Seq[String]] = request.body
val seq1 : Seq[String] = map.getOrElse("socket_id", Seq[String]())
val seq2 : Seq[String] = map.getOrElse("channel_name", Seq[String]())
val socketId = seq1.head
val channelName = seq2.head
- 1. Cách tải xuống tệp bằng Play Framework 2.0
- 2. play-framework [2.0] HTTPS
- 3. Thử nghiệm MultipartFormData trong Play 2.0 FakeRequest
- 4. Cách kiểm tra ứng dụng mẫu Zentasks từ Play 2.0
- 5. Cách xác định thẻ bằng Play 2.0?
- 6. Cách thiết lập PostgreSQL cho Play 2.0?
- 7. Ghi nhật ký tải trọng của POST lên Tomcat
- 8. Session.id ở đâu trong Play 2.0?
- 9. Thêm Play 2.0 vào Intellij
- 10. Cách sử dụng OAuth 2 trong Play Framework 2.0
- 11. Gửi yêu cầu POST tới Twitter API với Play Framework 2.0
- 12. Tương đương Play 2.0 của @Before và @After từ Play 1.2 là gì?
- 13. Cách gỡ lỗi kiểm tra bằng Play! 2.0
- 14. Chỉ định cổng Play 2.0 có "dist"
- 15. play framework 2.0 định tuyến ngược
- 16. Sử dụng CDN trên Play 2.0
- 17. Cách tạo biến toàn cục với Play Framework 2.0
- 18. Cách phân phối XML và JSON bằng Play! 2.0
- 19. Cách tải nội dung POST trong php?
- 20. Tước tải trọng từ một tcpdump?
- 21. Đặt tiêu đề HTTP trong Play 2.0 (scala)?
- 22. Thoát chuỗi JavaScript trong chế độ xem Play 2.0?
- 23. Phương thức isAjax() trong Play Framework 2.0 ở đâu?
- 24. Không thể hiểu Iteratee, ĐTV, Enumeratee trong Play 2.0
- 25. URL được bản địa hóa trong Play 2.0?
- 26. Diễn biến đang diễn ra trên Play Framework 2.0
- 27. Hỗ trợ công việc trong Play 2.0 ở đâu?
- 28. Tải lên tệp Ajax với Play 2.0: tồn tại nhưng thay thế thông số là false
- 29. Lấy ProgressEvent từ tải lên POST trong as3
- 30. Thiếu lệnh 'gỡ lỗi' từ Play 2.0 được cài đặt từ Typesafe
Anh chàng này truy cập bài đăng bằng cách liên kết URL với động từ HTTP và sau đó có thể truy cập trực tiếp đối tượng của mình: http://www.jamesward.com/2011/12/11/tutorial-play-framework- jpa-json-jquery-heroku –
@ user309483 Hiện tại, tôi không cần bất kỳ ràng buộc ngầm nào từ tải trọng tới đậu, dù sao, nhờ liên kết, nó có thể hữu ích :) – jglatre