Tôi có một hành động create
trong Play! bộ điều khiển khung phải trả về mã trạng thái HTTP Created
và chuyển hướng máy khách đến vị trí của đối tượng đã tạo.Trạng thái HTTP trả lại "đã tạo" trong Play! Khung
public class SomeController extends Controller {
public static void create() {
Something something = new Something();
something.save();
response.status = StatusCode.CREATED; // Doesn't work!
show(something.id);
}
public static void show(long id) {
render(Something.findById(id));
}
}
Xem thêm method chaining in the Play! framework documentation.
Đoạn mã trên trả về mã trạng thái 302 Found
thay vì 201 Created
. Tôi có thể làm gì để cho phép Play trả lại trạng thái chính xác (và tiêu đề Location
)?
'201 Created' nên được gửi cùng với một 'tiêu đề Location' đó sẽ không xảy ra với dung dịch 2. Ông có thể vui lòng giải thích giải pháp 1, tôi không hiểu nó? – deamon
Giải pháp 1 không tốt. Về cơ bản nó nói rằng, sau khi yêu cầu của bạn tạo ra, sau đó yêu cầu hiển thị(), do đó luồng của bạn được quyết định phía máy khách (tức là javascript), chứ không phải là các tác vụ trong hành động của bạn. – Codemwnci
Tôi đã kiểm tra mã nguồn cho Play (1.2.3) và đối tượng Redirect, có mã, được mặc định là 302. Nó có một hàm tạo để cung cấp một mã khác, nhưng hàm tạo này dường như không được sử dụng trong khuôn khổ. – Codemwnci