При создании api каждый допустимый URI сопоставляется с действием. Это действие может быть конкретным вызовом функции или может установить некоторые параметры, переданные общей функции.Эффективная карта RESTful URI для архитектуры конечных точек API
Мой вопрос в том, как и каков хороший метод для сопоставления uri, такого как /auth/create
, с правильным действием.
Чтобы проиллюстрировать мои попытки:
Я думал об именовании функции такие же, как в URI замена /
с Z
непосредственно вызывать функцию по имени. Я мог бы просто просто выполнить запрос $ request_uri без тестирования.
// from $request_uri = '/auth/create' I make;
$request_uri ='ZauthZcreate';
function ZauthZcreate($email, $password) {
echo "i've been called as expected \n";
}
$request_uri($_GET[email],$_GET[password]);
но это не сработает с чем-то вроде /user/123123
. Я стараюсь избегать попадания в бесконечный каскад if-else.
EDIT
я итерация на этой концепции и нашел другое решение:
$request_uri = '/api/auth/login';
$request_path = ltrim($request_uri,'/');
$request = explode('/', $request_path);
// begin point for api
if($method = array_shift($request)) {
if ($method == 'api') {
$method($request);
}
}
function api($request) {
$method = __FUNCTION__.'_'.array_shift($request);
if(is_callable($method)) {
$method($request);
}
}
// In a dedicated file for the scope auth
function api_auth($request) {
$method = __FUNCTION__.'_'.array_shift($request);
if(is_callable($method)) {
$method($request);
}
}
function api_auth_login($request) {
// api end point implementation here
}
function api_auth_create($request) {
// api end point implementation here
}
если вы нашли ссылку из другой остальной структуры апи, не стесняйтесь. У меня проблемы с поиском. –
http://stackoverflow.com/questions/4973156/how-to-write-a-rest-api – DaOgre