Merhaba. Lumen (8.0) ile basit bir REST Api yaptım. Bu api veritabanından belli verileri alıp, JSOn formatında istemciye veriyor. Test aşamasında, yalnızca kendisine gönderilen dataları geri veren bir echo server olarak bıraktım. Kendi bilgisayarımdaki kopyaya istek attığımda CURL ile attığım istekteki değerleri çıktı veriyor. Uygulamayı sunucuya yüklediğimde ise (Centos+Plesk VPS sunucu) POST methodlarını kabul etmiyor, etse de data kısmını siliyor. Boş çıktı veriyor. Bu durumun Lumen ile ilgili olma ihtimali nedir? Sunucu ile ilgili ise neden böyle bir durumla karşılaşıyorum. Fikirlerniz ve görüşleriniz için şimdiden teşekkür eder herkese iyi günler dilerim.
Aşağıda biraz daha detay vermeye çalıştım.
routes/web.php
$router->post('orders', [
'uses' => 'ApiController@orders',
//'middleware' => 'auth',
]);
ApiController.php
public function orders(Request $request)
{
if ($request->isJson()) {
$data = $request->json()->all();
} else {
$data = $request->all();
}
return $data;
}
URL: https://xxx.com/api/orders
Bu URL'e başka servislerden Request geliyor. Şuan Test etmek için kendisine gönderilen datayı ekrana çıktı veriyor.
Kendi Ubuntu makinemden (terminalden) ise aşağıdaki gibi sunucudaki URL'e istek attığımda
curl --location --request POST 'https://xxx.com/api/orders' \
--header 'token: ttttttttttttttttt' \
--header 'Content-Type: application/json' \
--data-raw '{
"orderStatusId": 4
}'
Sunucu Günlüğü aşağıdaki gibi olmaktadır.
2020-10-30 16:10:08 Access 95.7.236.200 200 POST /api/orders HTTP/1.0 curl/7.68.0 418 Apache SSL/TLS erişimi
Data bloğu boş geliyor. Data kısmı kayboluyor. Ya da sunucuya ulaşamıyor.
Sunucudaki URL'ye istek atan başka bir servis ise POST olarak istek atmasına rağmen loglarda GET olarak istek geldiği görülüyor.
Diğer servisin isteği sonrası oluşan log:
2020-10-30 16:15:21 Error 94.103.37.154 405 GET /api/orders HTTP/1.0 RestSharp/106.11.4.0 2.10 K Apache SSL/TLS erişimi
Logda görüldüğü üzere POST olarak gönderilen istekler sunucuda GET olarak görülüyor.
Ubuntu Terminalden, kendi bilgisayarımdaki kopyaya aşağıdaki gibi istek attığımda ise
curl --location --request POST 'http://localhost/api/orders' \
--header 'token: tttttttttttttttt' \
--header 'Content-Type: application/json' \
--data-raw '{
"orderStatusId": "4"
}'
Gönderdiğim veriyi çıktı olarak vermektedir.