Documentation

You are viewing the documentation for the 2.3.x release series. The latest stable release series is 2.4.x.

§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" yerine HTML 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.