我使用Laravel作为一个简单的API来路由用户:
Route::get('api/v1/mu/{dte?}', 'API\APIController@MUIntervalAPICall');
到这个控制器:
public function MUIntervalAPICall(Request $dte)
{
$date = $dte->dte;
$element_language = $dte->language;
$element_customer = $dte->customer;
$mu_interval = MUInterval::select("SELECT :element_language, :dte, :element_customer, null, null, null, null, null, null, null, null, null, null, null"
, ["element_language" => $element_language, "dte" => $date, "element_customer" => $element_customer])->get()->toArray();
function array_to_xml( $data, &$xml_data ) {
foreach( $data as $key => $value ) {
if( is_array($value) ) {
$key = 'Exception';
$subnode = $xml_data->addChild($key);
array_to_xml($value, $subnode);
} else {
$xml_data->addChild("$key",htmlspecialchars("$value"));
}
}
}
$xml_data = new SimpleXMLElement('<?xml version="1.0"?><muExceptions></muExceptions>');
array_to_xml($mu_interval,$xml_data);
$result = $xml_data->asXML();
return Response::make($result, '200')->header('Content-Type', 'text/xml');
}
我测试过的网址(http://localhost:8000/api/v1/mu/2016-02-13?customer=Apple&language=English)发出了这个错误:
是什么原因引起的?用户在技术上会将日期?language =&amp; customer =或date?customer =或date?language =或仅仅是日期?但都没有效果。
如何获取我提到的URL中的值并在查询中使用它?
答案 0 :(得分:0)
回复:“我如何在我提到的网址中获取这些值并在我的查询中使用它?”
您正在传递方法Request
对象,您可以使用该对象访问请求/网址中的数据。
您可以使用input
或get
方法访问它:
$element_language = $dte->input('language');
$element_language = $dte->get('language');
进一步阅读:
https://laravel.com/docs/5.2/requests#accessing-the-request
https://laravel.com/api/5.2/Illuminate/Http/Request.html#method_input
我认为您的代码应如下所示:
public function MUIntervalAPICall(Request $dte)
{
// get request data
$date = $dte->get('dte');
$element_language = $dte->get('language');
$element_customer = $dte->get('customer');
$mu_interval = MUInterval::select("SELECT :element_language, :dte, :element_customer, null, null, null, null, null, null, null, null, null, null, null"
, ["element_language" => $element_language, "dte" => $date, "element_customer" => $element_customer])->get()->toArray();
// xml stuff
function array_to_xml( $data, &$xml_data ) {
foreach( $data as $key => $value ) {
if( is_array($value) ) {
$key = 'Exception';
$subnode = $xml_data->addChild($key);
array_to_xml($value, $subnode);
} else {
$xml_data->addChild("$key",htmlspecialchars("$value"));
}
}
}
$xml_data = new SimpleXMLElement('<?xml version="1.0"?><muExceptions></muExceptions>');
array_to_xml($mu_interval,$xml_data);
$result = $xml_data->asXML();
// response
return Response::make($result, '200')->header('Content-Type', 'text/xml');
}