mirror of
https://github.com/drogonframework/drogon.git
synced 2025-07-18 00:00:46 -04:00
Compare commits
2 Commits
a18df843c1
...
88ce2115c3
Author | SHA1 | Date | |
---|---|---|---|
|
88ce2115c3 | ||
|
7f599ff773 |
@ -524,6 +524,42 @@ void HttpControllersRouter::route(
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
std::vector<std::string> params;
|
||||||
|
for (size_t j = 1; j < result.size(); ++j)
|
||||||
|
{
|
||||||
|
if (!result[j].matched)
|
||||||
|
continue;
|
||||||
|
size_t place = j;
|
||||||
|
if (j <= binder->parameterPlaces_.size())
|
||||||
|
{
|
||||||
|
place = binder->parameterPlaces_[j - 1];
|
||||||
|
}
|
||||||
|
if (place > params.size())
|
||||||
|
params.resize(place);
|
||||||
|
params[place - 1] = result[j].str();
|
||||||
|
LOG_TRACE << "place=" << place << " para:" << params[place - 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!binder->queryParametersPlaces_.empty())
|
||||||
|
{
|
||||||
|
auto &queryPara = req->getParameters();
|
||||||
|
for (auto const ¶Place : binder->queryParametersPlaces_)
|
||||||
|
{
|
||||||
|
auto place = paraPlace.second;
|
||||||
|
if (place > params.size())
|
||||||
|
params.resize(place);
|
||||||
|
auto iter = queryPara.find(paraPlace.first);
|
||||||
|
if (iter != queryPara.end())
|
||||||
|
{
|
||||||
|
params[place - 1] = iter->second;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
params[place - 1] = std::string{};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
req->setRoutingParameters(std::move(params));
|
||||||
if (!postRoutingObservers_.empty())
|
if (!postRoutingObservers_.empty())
|
||||||
{
|
{
|
||||||
for (auto &observer : postRoutingObservers_)
|
for (auto &observer : postRoutingObservers_)
|
||||||
@ -639,41 +675,11 @@ void HttpControllersRouter::doControllerHandler(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::deque<std::string> params(ctrlBinderPtr->parameterPlaces_.size());
|
auto ¶msVector = req->getRoutingParameters();
|
||||||
|
std::deque<std::string> params(paramsVector.size());
|
||||||
for (size_t j = 1; j < matchResult.size(); ++j)
|
for (int i = 0; i < paramsVector.size(); i++)
|
||||||
{
|
{
|
||||||
if (!matchResult[j].matched)
|
params[i] = paramsVector[i];
|
||||||
continue;
|
|
||||||
size_t place = j;
|
|
||||||
if (j <= ctrlBinderPtr->parameterPlaces_.size())
|
|
||||||
{
|
|
||||||
place = ctrlBinderPtr->parameterPlaces_[j - 1];
|
|
||||||
}
|
|
||||||
if (place > params.size())
|
|
||||||
params.resize(place);
|
|
||||||
params[place - 1] = matchResult[j].str();
|
|
||||||
LOG_TRACE << "place=" << place << " para:" << params[place - 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!ctrlBinderPtr->queryParametersPlaces_.empty())
|
|
||||||
{
|
|
||||||
auto &queryPara = req->getParameters();
|
|
||||||
for (auto const ¶Place : ctrlBinderPtr->queryParametersPlaces_)
|
|
||||||
{
|
|
||||||
auto place = paraPlace.second;
|
|
||||||
if (place > params.size())
|
|
||||||
params.resize(place);
|
|
||||||
auto iter = queryPara.find(paraPlace.first);
|
|
||||||
if (iter != queryPara.end())
|
|
||||||
{
|
|
||||||
params[place - 1] = iter->second;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
params[place - 1] = std::string{};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ctrlBinderPtr->binderPtr_->handleHttpRequest(
|
ctrlBinderPtr->binderPtr_->handleHttpRequest(
|
||||||
params,
|
params,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user