React Native üzerinden sunucu ile haberleşme sağlamak istediğinizde sunucu tarafında kullandığınız dil PHP ise normal bir cURL yada GET POST methodları ile API kullanmak istediğinizde ya JSON datayı serilaze ederek post etmelisiniz yahut sunucu tarafında veriyi JSON formatında almalısınız.
NE demek istediğimizi biraz açacak olursak RN tarafında bu işlemi örnek ile açıklayalım
Serilaze etmeden direk JSON formatında data gönderimi ;
async sunucudanCek(){ await fetch('http://postedileceksunucu.com', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, body:JSON.stringify({ POST_DEGERI:'post değerimiz', }) }) .then((response) => response.json()) .then((responseJson) => { this.setState({ data: responseJson, }); }) .catch((error) => { console.error(error); }); }
yukarıdaki örnekteki gibi bir datayı post ediyorsak ki burda JSON ile gönderildiğini “body:JSON.stringify({” alanından anlayabiliriz, bu durumda PHP tarafında veriyi yakalamak için kullanmamız gereken yöntem ;
$gelendeger = file_get_contents('php://input'); $jsonData = json_decode($posts, true); print_r($jsonData);
yukarıdaki şekilde React Native uygulamamızdan gelen post değerini yakaladık ve $jsonData alanına yükledik ve $jsonData değişkenimizin içerisinde gelen değerlerin bulunduğu bir dizi var peki gelen POST_DEGERI isimli değişkeni nasıl çekeriz dersek
echo $jsonData['POST_DEGERI'];
şeklinde ekrana basabiliriz yada dilerseniz bunun üzerinde işlem yapabilirsiniz.
Diğer bir yöntem olan yani direk sayfalar arasında veri transferiymiş gibi işlem yapmak istersek yani $_POST methodu ile kullanmak istersek ne yapıyoruz dersek ;
async sunucudanCek(){ await fetch('http://postedileceksunucu.com', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, body:serilazeKey({ POST_DEGERI:'post değerimiz', }) }) .then((response) => response.json()) .then((responseJson) => { this.setState({ data: responseJson, }); }) .catch((error) => { console.error(error); }); }
artık JSON.stringify kullanmıyoruz bunun yerine internet üzerinde yaptığım arıştırma neticesinde bulmuş olduğum bir fonksiyonu kullanıyoruz bu fonksiyon işlerimizi oldukça kolaylaştırıyor neden dersek bazı hosting firmaları file_get_contents fonksiyonunu güvenlik gerekçesiyle kapatabiliyor.
Kapatmamış bir firma ile çalışıyor olsanız dahi bu fonksiyonu kullanmanızı pek önermem çünkü her zaman kendinize ait fonksiyonlar scriptinizin ömrü için daha sağlıklı olacaktır , php kendi yapısında dahi yeni versiyonlarında bazı fonksiyonları kapatabiliyor.
Fonksiyonun iç yapısına bakacak olursak ;
export function serializeKey(data) { var formBody = []; for (var property in data) { var encodedKey = encodeURIComponent(property); var encodedValue = encodeURIComponent(data[property]); formBody.push(encodedKey + "=" + encodedValue); } formBody = formBody.join("&"); return formBody; }
Yukarıdaki işlemler ile artık uygulamanız için sunucunuzda bulunan veritabanını kullanabilirsiniz yada istatistik verilerinizi sunucuya yükleyebilirsiniz, yada uygulamanıza bu yöntem ile kullanıcı giriş çıkış işlemleri yapabilirsiniz.