Restful Kütüphanesi


    × Bunları biliyor muydunuz?
"Devtools projesi ile framework kullanma deneyiminizi daha görsel hale getirebilirsiniz."


REST (Temsilî Durum Aktarımı - Representational state transfer), Web protokolleri ve teknolojilerini kullanan bir dağıtık sistemdir. REST prensiplerini sağlayan sistemler, RESTful olarak sıfatlandırılır. Temsilî Durum Aktarımı ismindeki temsilî, verinin temsilini kastetmekte olup onunla ilgili durumun aktarılması olarak düşünülebilir.

2000 yılında HTTP spesifikasyonunun yazarlarından biri olan Roy Fielding tarafından doktora tezinin bir parçası olarak geliştirilmiştir.

SOAP ve WSDL tabanlı Web servislerine spesifikasyon olarak daha basit bir alternatif olarak geliştirilmiştir. RESTful sistemler çoğunlukla HTTP protokolü üzerinden Web tarayıcıları tarafından sayfaların transferinde de kullanılan HTTP fiilleri (GET, POST, PUT, DELETE v.s.) ile haberleşirler.

Aktarılan verinin formatı HTML, JSON, XML ya da farklı bir tipte olabilir. REST, bu konuda bir kısıtlama getirmez. Aktarılan verinin tipi ve özellikleri istemci ve sunucu tarafından HTTP protokolünde yer alan content-type (içerik tipi) ve benzeri metaveri ile tanımlanır.

 

 

# Kurulum


ZN SE ve ZN CE dağıtımları için terminal kurulum komutu.

↓ composer require znframework/package-services

 

 

# Yöntemler


4.3.5 Mixed get(String $url = NULL)
4.3.5 Mixed post(String $url = NULL, Mixed $data = NULL)
4.3.5 Mixed put(String $url = NULL, Mixed $data = NULL)
5.7.2 Mixed putJson(String $url = NULL, Mixed $data = NULL)
5.7.2 Mixed patch(String $url = NULL, Mixed $data = NULL)
5.7.2 Mixed patchJson(String $url = NULL, Mixed $data = NULL)
4.3.5 Mixed delete(String $url = NULL, Mixed $data = NULL)
4.3.5 Void return(Callable $callback)
4.3.5 This url(String $url)
4.3.5 This data(Mixed $data)
4.3.5 This contentType(String $type = 'json', String $charset = 'utf-8')
4.3.5 This httpStatus(Int $code = NULL)

 

 

# Get (ZN >= 4.3.5)


Verileri listelemek için kullanılır. Genellikle api sağlayıcısının çıktısı alınır. Bu çıktı Object türünden veri olarak döndürülür. Veri gönderimi GET metodu ile yapılır.

Parametreler

String $url Bağlantı kurulacak URL.
Return Object | String

Kullanımı

$response = Restful::get('https://api.openweathermap.org/data/2.5/forecast/city?q=istanbul&APPID=25e585073d9232f10fa66afa76d62fda');

output($response);

 

 

# Post (ZN >= 4.3.5)


Api servislerine post gönderimi için kullanılır. Genellikle api sağlayıcısında yer alan kodlara veri göndermek için kullanılır. Böylece göndereceğiniz veriye göre istediğiniz çıktıyı elde etmeniz sağlanır. Bazende sadece veri göndermek için kullanılır. Veri gönderimi POST metodu ile yapılır.

Parametreler

String $url Bağlantı kurulacak URL.
Mixed $data Gönderilecek veriler. Bu parametre yerine data() yönteminden de yararlanılabilir.
Return Object | String

Kullanımı

Restful::data
([
    'title'        => $title, 
    'access_token' => $accessToken,
    'receivers'    => $receivers,
    'content'      => $message
])
->post('https://api.bulutfon.com/messages');

 

 

# Put (ZN >= 4.3.5)


Genellikle api sağlayıcısında yer alan veriyi güncellemek için kullanılır. Data gönderimi URL biçimli olarak gönderilir. Veri gönderimi özel istek PUT ile yapılır.

Parametreler

String $url Bağlantı kurulacak URL.
Mixed $data Gönderilecek veriler. Bu parametre yerine data() yönteminden de yararlanılabilir.
Return Object | String

Kullanımı

Restful::data
([
    'id'     => $id,
    'update' => ['name' => $name, 'ip' => User::ip()]
])
->put('https://example.com/apis/update');
Data Biçimi: name=example&ip=127.0.0.1

 

 

# PutJson (ZN >= 5.7.2)


Genellikle api sağlayıcısında yer alan veriyi değiştirmek için kullanılır. Data gönderimi JSON biçimli olarak gönderilir.

Parametreler

String $url Bağlantı kurulacak URL.
Mixed $data Gönderilecek veriler. Bu parametre yerine data() yönteminden de yararlanılabilir.
Return Object | String

Kullanımı

Restful::data
([
    'id'     => $id,
    'update' => ['name' => $name, 'ip' => User::ip()]
])
->putJson('https://example.com/apis/update');
Data Biçimi: {name:'example', ip:'127.0.0.1'}

 

 

# Patch (ZN >= 5.7.2)


Genellikle api sağlayıcısında yer alan veriyi düzeltmek için kullanılır. Data gönderimi URL biçimli olarak gönderilir. Veri gönderimi özel istek PATCH ile yapılır.

Parametreler

String $url Bağlantı kurulacak URL.
Mixed $data Gönderilecek veriler. Bu parametre yerine data() yönteminden de yararlanılabilir.
Return Object | String

Kullanımı

Restful::data
([
    'id'     => $id,
    'update' => ['name' => $name, 'ip' => User::ip()]
])
->patch('https://example.com/apis/update');
Data Biçimi: name=example&ip=127.0.0.1

 

 

# PatchJson (ZN >= 5.7.2)


Genellikle api sağlayıcısında yer alan veriyi güncellemek için kullanılır. Data gönderimi JSON biçimli olarak gönderilir.

Parametreler

String $url Bağlantı kurulacak URL.
Mixed $data Gönderilecek veriler. Bu parametre yerine data() yönteminden de yararlanılabilir.
Return Object | String

Kullanımı

Restful::data
([
    'id'     => $id,
    'update' => ['name' => $name, 'ip' => User::ip()]
])
->patchJson('https://example.com/apis/update');
Data Biçimi: {name:'example', ip:'127.0.0.1'}

 

 

# Delete (ZN >= 4.3.5)

Genellikle api sağlayıcısında yer alan veriyi silmek için kullanılır. Özel istek DELETE gönderimi yapar.

Parametreler

String $url Bağlantı kurulacak URL.
Mixed $data Gönderilecek veriler. Bu parametre yerine data() yönteminden de yararlanılabilir.
Return Object | String

Kullanımı

Restful::data
([
    'id'     => $id
])
->delete('https://example.com/apis/delete');

 

 

# Return (ZN >= 4.3.5)

Veri sağlayıcısı oluşturmak için kullanılır. Sizin makineninize uzaktan istek yapıldığında gelen post, get veya uri verilerine göre json veya xml çıktı oluşturmak kullanılır.

Parametreler

Callable $callback Çalıştırılacak komutlar.
Return Void

Kullanımı

Aşağıda örnek bir kullanım yer almaktadır.

Response / Yanıt

Response Address: domain.com/apis/api
<?php namespace Project\Controllers;

use Restful, DB, Method;

class Api extends Controller
{
    public function ex()
    {
        Restful::contentType('json')->return(function()
        {
            echo DB::where('id', Method::post('id'))
                   ->select('username', 'phone')
                   ->get('users')->resultJson();
        });
    }
}

Request / İstek 

Request Address: mysite.com/example/request
<?php namespace Project\Controllers;

use Restful;

class Example extends Controller
{
    public function request()
    {
        $rest = Restful::post('domain.com/apis/api', ['id' => 4]);

        output($rest);
    }
}
0 => object
(
        username => string 'example' ( length = 9 )
        phone => string '' ( length = 2 )