Photo by Anthony DELANOIX on Unsplash

Introduction

Every software program has fundamental building blocks. In Object-Oriented Programming, we use classes to build complex architectures. Like building a structure, we set up relations that are called dependencies between our blocks. Other classes support our class by offering to do complex operations on our behalf of us.

A class may have fields that refer to other ones. Then, we have to ask these questions: How are these references constructed? Should we assemble these objects, or should others be responsible for instantiating them? What if instantiating a class is too complex, and we want to avoid spaghetti code? …


Photo by Jack Finnigan on Unsplash

Bu yazı, GraphQL’e Giriş serisinin 3. yazısıdır. Serinin yazıları:

  1. GraphQL’e Giriş: GraphQL Nedir?
  2. GraphQL’e Giriş-2: Query ve Mutasyonlar
  3. GraphQL’e Giriş-3: Node.js ve GraphQL (Bu yazıyı okumaktasınız)

Önceki yazılarda GraphQL’in ne olduğundan, hangi sorunları çözdüğünden ve GraphQL ile neler yapabileceğimizden bahsetmiştik. Bu yazıda ise Node.js, Apollo Server, TypeGraphQL ve TypeORM ile bir GraphQL sunucusunu nasıl oluşturabileceğimizden bahsedeceğim. Eğer GraphQL konusunda yeterli bilgi sahibi değilseniz, serinin önceki yazılarını okuduktan sonra bu yazıya dönmenizi tavsiye ederim.

  • Projenin Oluşturulması
  • Kütüphaneler
  • Config Dosyaları
  • Uygulama
  • Veritabanı Varlıkları
  • GraphQL Tipleri
  • GraphQL Resolver

Projenin Oluşturulması

Projeyi oluştururken yaptığım bazı kişisel tercihler var. Sizler de benim yaptığım tercihleri yaparak yazıdakiyle uyumlu…


Photo by Claudio Testa on Unsplash

Bu yazı, GraphQL’e Giriş serisinin 2. yazısıdır. Serinin yazıları:

  1. GraphQL’e Giriş: GraphQL Nedir?
  2. GraphQL’e Giriş-2: Query ve Mutasyonlar (Bu yazıyı okumaktasınız)

Serinin önceki yazısında HTTP’nin ne olduğundan, REST mimarisi ve sorunlarından, bu sorunlara GraphQL’in nasıl çözümler sağladığından bahsetmiştik. Query ve Mutation kavramlarına basit örnekler verip neler olduğunu konuşmuştuk. Bu yazımızda, bu iki kavramı daha derinlemesine işleyeceğiz.

Bir sunucu üzerinde yaptığımız en temel işlem, sunucudan veri almaktır. Veri alırken, almak istediğimiz veriyle ilgili kısıtlar da belirtiriz. Belirli bir sayı aralığı, format, kullanıcı adı gibi kısıtları kullanarak sunucu üzerindeki veride sorgulama yaparız. Buna Query diyoruz. Veriyi sorguladığımız gibi, veriler üzerinde değişiklik yapmak…


Photo by Jon Flobrant on Unsplash

İstemci-Sunucu mimarisi günümüzde en çok kullanılan veri iletişim modelidir. Sunucu(server), bir veya daha çok yazılımı bir makine üzerinde çalıştırır ve gelecek olan istekleri dinler. İstemciler(client), sunucularla iletişimi başlatır ve sunucunun sağladığı bir kaynağa(resource) veya servise(service) erişim isteğinde bulunur.

İnternet üzerinde haberleşmeyi sağlayan web servisleri yaratmak için sıklıkla kullanılan yazılım mimarilerinden bir tanesi REST(Representational state transfer) mimarisidir. Sunucu üzerinde çalışan yazılımda, daha önceden belirlenmiş ve istemciye ait durum bilgileri içermeyen(stateless) bazı uç noktalar(endpoints) bulunur. İstemciler, bu uç noktalara HTTP istekleri(request) yollayarak, sunucunun sağladığı kaynaklardan faydalanır.

REST ve HTTP

RESTful servisler için bir standart olmamasına rağmen bazı kısıtlamalar bulunmaktadır. …


Fizz buzz game — Haskell

The world is big and complicated. Events, that needed to be solved, have many factors that affect the outcomes. The human mind is not capable of evaluating all these factors. That’s why we built and advanced our technology to deal with these problems. We coded programs to solve issues, but our problems didn’t stop to arise. Just the opposite, they start to become more complex.

Yet, problems tend to have similarities, so do the solutions. There are patterns occurring, naturally, in solutions. People put together these patterns and we get programming paradigms. Different problem sets require different tools to solve…


Photo by Fabian Grohs on Unsplash

Kotlin, standart programlama alışkanlıklarımızın üzerine birçok yenilik getiren ve alanında dinamik bir programlama dili. Nesneye dayalı programlamanın ve fonksiyonel programlamanın temel ilkelerinin bir arada olduğu, her iki alanın da güçlü yanlarının sentezlendiği bir yapıya sahip.

Standart kütüphanesinde yer alan scope(kapsam / alan / bağlam) fonksiyonları, Kotlin’in sunduğu avantajları gösteren önemli konulardan. Yapılarının benzerliği ve benzer bağlamlarda kullanılmaları nedeniyle birbirlerine karıştırılabilen bu fonksiyonların görevlerinin neler olduğunu ve ne gibi konularda ayrıştıklarını beraber inceleyelim.

Öncelikle scope fonksiyonlarının neler olduğunu anlamakla başlayalım. Kotlin dokümantasyonu bu fonksiyonları, “Bir nesnenin bağlamı içerisinde bir kod bloğunu çalıştırmayı sağlayan fonksiyonlar” olarak tanımlıyor. Bu fonksiyonların ortak özellikleri bir…

Mert Türkmenoğlu

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store