Çalışanlarının notlarını yazması için kullanmakta olduğu eski uygulamayı modern bir uygulama haline getiriyoruz.
Yazılım ekibi olarak uygulamanın gelecekte yine yavaşlamaması için kayıtlı notları cache mekanizması ile sunmaya karar verdik. -Daha sonra farklı alternatifler kullanma şansımız var- ancak, başlangıç olarak Redis kullanmayı tercih ettik. Sistemci arkadaşlarımız ise; gerektiğinde cache mekanizmasını kaynak kodu değiştirmeden açıp kapatmak istediklerini söylediler.
Uygulamanın arayüzünü front-end geliştirici arkadaşlarımız yazdı. Back-end developer olarak bizim görevimiz; yazılmış olan uygulamanın JSON uygulama programlama arayüzünü PHP 5.6+ ile geliştirmek.
- Laravel 5.1+
- MySQL, Redis
Front-end uygulaması, HTTP Protokü üzerinden sırası ile şu istekleri gönderecektir.
1- [GET|HEAD] {api_adresi}/note
2- [GET|HEAD] {api_adresi}/note/create
3- [POST] {api_adresi}/note
4- [GET|HEAD] {api_adresi}/note/{note}
5- [GET|HEAD] {api_adresi}/note/{note}/edit
6- [PUT] {api_adresi}/note/{note}
8- [DELETE] {api_adresi}/note/{note}
HTTP POST ve HTTP PUT metodlarında arayüz tarafından gönderilen not prototipi şu aşağıdaki gibidir:
{
"name": "Lorem Ipsum",
"content": "Lorem ipsum dolor sit amet.",
"tags": [
"foo", "bar", "baz"
]
}
HTTP GET metodlarında ise, API'dan gelen veri şu şekilde olmalıdır:
{
"name": "Lorem Ipsum",
"content": "Lorem ipsum dolor sit amet.",
"created_at": "2016-10-24T15:25:43.511Z",
"updated_at": "2016-10-24T15:25:43.511Z",
"tags": [{
"id": 1,
"name": "foo"
}, {
"id": 2,
"name": "bar"
}]
}
###Docker Compose Dosyası(Opsiyonel)
Docker Compose ile uygulamalarınızı oluşturabilirsiniz, docker compose altyapınızı kurma ve sürümlendirme işlemini basitleştirir.
Eğer Docker kullanmak istiyorsanız terminalden Laradoc klasörü içerisinde iken aşağıdaki kodu çalıştırmanız yeterli olacaktır.
docker-compose up -d nginx mariadb redis workspace
###API Kullanımı 1-[GET|HEAD] {api_adresi}/note
Notları listelemek için kullanabileceğiniz api adresidir. İsterseniz bu alanda sayfalama yapabilirsiniz. Örnek:
{api_adresi}/note?page=1 // İlk 30 kayıdı çeker
{api_adresi}/note?page=2 // Sonraki 30 kaydı çeker
2- [POST] {api_adresi}/note Yeni bir not yaratmak için kullanacağınız url 'dir.
Alanlar ve Açıklamaları
name => required|string|max:50,
content => required|string
tags: required|numeric|array
Örnek(tag)
tags[] = [1,2,3]
3- [GET|HEAD] {api_adresi}/note/{note} İstemiş olduğunuz notun id numarasını göndererek ilişkili olduğu tags lar ile birlikte alabilirsiniz.
4- [GET|HEAD] {api_adresi}/note/{note}/edit
Güncellemek istediğiniz notu id numarası ile göndererek ilgili not ve ona ait tagları cekebilirsiniz.
JSON objesinde gelen verinin içerisinde tags verileri de mevcuttur.
[
'note' => {},
'tags' => [{}]
]
5- [PUT] {api_adresi}/note/{note} Bir notu güncellemek için kullanacağınız url 'dir.
name => required|string|max:50,
content => required
tags: required|numeric|array
Örnek(tag)
tags[] = [1,2,3]
6- [DELETE] {api_adresi}/note/{note} İstediğiniz notu bu url i kullanarak silebilirsiniz.
{note} => required|numeric
###Cache Mekanizmasi
Sistemci arkadaşlarımız; gerektiğinde cache mekanizmasını kaynak kodu değiştirmeden açıp kapatmak isteyebilirler. Bu için yapılması gereken işlem terminalden cache durumunu değiştirmek olacaktır.
Bu seneryoda cache:status sadece true, false değerlerini alabilmektedir. Harici bir durumda hata ile karşılaşılacaktır.
#####Örnek Terminal Kodu ve Çıktısı:
$ php artisan cache:status true
Do you wish to continue? [yes|no] (yes/no) [no]:
> yes
Successfully
###Kaynaklar