§Yanıtları işlemek
§Varsayılan Content-Type’ı değiştirmek
Yanıt içerik türü yanıt gövdesi olarak belirttiğiniz Scala değerinden otomatik olarak çıkarılır.
Örneğin:
val textResult = Ok("Hello World!")
Content-Type
başlığını otomatik olarak text/plain
setlerken:
val xmlResult = Ok(<message>Hello World!</message>)
Content-Type başlığını application/xml
olarak setleyecektir.
İpucu: bu işlem
play.api.http.ContentTypeOf
tür sınıfı tarafından gerçekleştirilir.
Bu yöntem genelde kullanışlıdır fakat bazen bu davranışı değiştirmek istersiniz. Benzer bir yanıtı farklı bir Content-Type
başlığı ile oluşturmak için result üzerinde as(newContentType)
metodunu çağırmanız yeterlidir.
val htmlResult = Ok(<h1>Hello World!</h1>).as("text/html")
Daha da iyisi aşağıdaki gibidir:
val htmlResult2 = Ok(<h1>Hello World!</h1>).as(HTML)
Not:
"text/html"
yerineHTML
kullandığınızda charset sizin için otomatik olarak ele alınacak ve Content-Type başlığıtext/html; charset=utf-8
olarak setlenecektir. Bunu birazdan göreceğiz.
§HTTP başlıklarını işlemek
Yanıta istediğiniz HTTP başlığını ekleyebilir ya da mevcut başlığı güncelleyebilirsiniz:
val result = Ok("Hello World!").withHeaders(
CACHE_CONTROL -> "max-age=3600",
ETAG -> "xx")
Eğer setlenmek istenen HTTP başlığı orijinal yanıtta mevcutsa başlığın önceki değerinin üzerine yazılır.
§Çerezleri setlemek ya da silmek
Çerezler yalnızca HTTP başlıklarının özel bir biçimidir fakat onları yönetmek için bazı yardımcılar sunuyoruz.
HTTP yanıtına aşağıdaki gibi kolayca bir çerez ekleyebilirsiniz:
val result = Ok("Hello world").withCookies(
Cookie("theme", "blue"))
Ya da tarayıcıda daha önce saklanmış olan çerezi silebilirsiniz:
val result2 = result.discardingCookies(DiscardingCookie("theme"))
Aynı yanıtta çerezleri hem ekleyebilir hem de silebilirsiniz:
val result3 = result.withCookies(Cookie("theme", "blue")).discardingCookies(DiscardingCookie("skin"))
§Metin tabanlı HTTP yanıtlarının charset’ini değiştirmek
Metin tabanlı HTTP yanıtları için charset’in düzgün ele alınması çok önemlidir. Play bunu sizin için yönetir ve varsayılan olarak utf-8
kullanır.
Charset hem metin yanıtının ağ soketi üzerinden üzerinden gönderilecek bayt dizisine çevrilmesinde hem de Content-Type
başlığının düzgün ;charset=xxx
eklentisi ile güncellenmesinde kullanılır.
Charset play.api.mvc.Codec
tür sınıfı tarafından otomatik olarak yönetilir. Örtük bir play.api.mvc.Codec
örneğini şimdiki kapsama import ederek tüm işlemler tarafından kullanılacak charset’i değiştirebilirsiniz:
object Application extends Controller {
implicit val myCustomCharset = Codec.javaSupported("iso-8859-1")
def index = Action {
Ok(<h1>Hello World!</h1>).as(HTML)
}
}
Yukarıdaki örnekte kapsamda örtük bir charset değeri olduğundan hem Ok(...)
metodu tarafından XML mesajın ISO-8859-1
kodlanmış baytlara dönüştürülmesinde hem de text/html; charset=iso-8859-1
Content-Type başlığının oluşturulmasında kullanılacaktır.
Şimdi HTML
metodunun nasıl çalıştığını merak ediyorsanız tanımı aşağıda yer alıyor:
def HTML(implicit codec: Codec) = {
"text/html; charset=" + codec.charset
}
Eğer charset’i genel bir yolla ele almaya ihtiyaç duyarsanız benzer bir yöntemi kendi API’niz içinde kullanabilirsiniz.
Sonraki: Session ve Flash kapsamları
Dokümantasyonun bu çevirisi Play ekibi tarafından yapılmamaktadır. Eğer bir hata bulduysanız, bu sayfanın kaynak kodu burada bulunmaktadır. Dokümantasyon yönergelerini okuduktan sonra lütfen katkı yapmaktan çekinmeyin.