2016-03-31 13 views
4

Öncelikle, bu kötü bir soru/uygulama ise özür dileriz. Laravel için çok yeniyim, bu yüzden hala onunla uğraşıyorum.Laravel Güzergahı üzerinden "" ve "/" değişkenlerini geçmek

Bir laravel 5 rotada geriye düz eğik çizgi (/) ve eğik çizgiler() içeren bir değişken geçmesine çalışılıyor ve bazı zorluklar yaşıyorum. api.dev/api/v1/service/DfDte\/uM5fy582WtmkFLJg==:

aşağıdaki kullanıyorum.

girişimi 1: ilk denemesi aşağıdaki kod kullanılır ve doğal olarak, 404.

rota ile sonuçlanmıştır

:

Route::group(array('prefix' => 'api/v1'), function() { 
    Route::resource('service', 'ServiceController'); 
}); 

Kontrol:

public function show($service) { 
    return $service; 
} 

Sonuç:

404 

Denemesi 2:

Ben ancak, dönüştürme gibi görünüyor, StackOverflow'daki arama biraz yaptım ve neredeyse çalışır aşağıdaki kodu kullanarak sona erdi \ to /.

Rota:

Route::group(array('prefix' => 'api/v1'), function() { 
    Route::get('service/{slashData}', '[email protected]') 
    ->where('slashData', '(.*)'); 
}); 

Denetleyici:

public function getData($slashData = null) { 
    if($slashData) { 
     return $slashData; 
    } 
} 

Sonuç: Görüldüğü gibi

DfDte//uM5fy582WtmkFLJg== 

, bu kadar varı geçiyor ancak \ 'yi /.

Ben bir API oluşturmak çalışılıyor ve ne yazık ki geçiyorum değişken benim kontrolüm dışında (örneğin ben sadece/\ kullanıp kullanmayacağına olamaz) 'dir.

kimse herhangi bir tavsiye var mı veya sağ yönde işaret olabilir?

Teşekkürler.

+4

Eğer api varsa.dev/api/v1/service/DfDte \/uM5fy582WtmkFLJg == 'bir istek URL'si olması gerektiği anlamına geldikten sonra, bunun açıkça geçersiz olduğunu unutmayın. Bir ters eğik çizgi, bir URL'de geçerli bir karakterdir, "bunu yüzde kodlamak" zorundasınız. Ya da gerçekte aşağıdaki eğik çizgiden kaçmak istiyorsanız, aynı şekilde: ters eğik çizgi kullanmayın, ancak URL bunun yerine eğik çizgiyi kodlar. Tıpkı URL'lerin resmi tanımlaması gibi. – arkascha

+0

Maalesef \ aslında bir değişken olarak geçmeye çalıştığım kimliğin bir parçasıdır. Değişkeni kodlamayı denedim, ör. "DfDte% 5C% 2FuM5fy582WtmkFLJg% 3D% 3D" ancak bu sadece "Giriş 2" de verilen kodu kullanarak başka bir 404 yol açar. – tombraider

+1

Kesinlikle veri modelinizi bilmiyorum, ancak '\ /' literal dizisini içeren bir kimlik bana çok benzemiyor. Bunun gerçekten içerilen eğik çizgi kaçmak anlamına gelen bir gösterim olmadığından emin misiniz? – arkascha

cevap

0

Orijinal sorudaki yorumlardan da görebileceğiniz gibi, URL'de iletmeye çalıştığım değişken, json_encode numaralı telefonu kullandığım önceki bir API çağrısı sonucuydu. json_encode otomatik olarak eğik çizgileri dener ve kaçar, dolayısıyla değişkene ek \ eklenir. Orijinal aramaya ve voila'ya bir JSON_UNESCAPED_SLASHES bayrağı ekledim, her şey beklendiği gibi çalışıyor.

0

Bunu yapmamalısınız. Laravel, "/" nedeniyle yeni bir parametre olduğunu düşünecek. Bunun yerine, parametrenizde htmlentitites ve html_entity_decode kullanın veya POST kullanın.