RestPHP
RestPHP: особенности
/users/{userId}
или /users/{userId}/orders/{orderId}
;Установка
location / {
index index.php;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?$1 last;
}
}
Использование
Загрузка файлов
Файлы загружаются автоматически, без необходимости использования команд require или include в логическом коде. Загрузка файлов разделена на две области:
Механизм загрузки файлов основан на сопоставлении имён пространств имён и классов, поэтому имена классов должны совпадать с именами файлов.
Создание маршрутов
Используйте аннотацию @RequestMapping с параметрами value и method. Теперь можно использовать ключевые слова действий, такие как @Get, @Post, @Put, @Delete, @Patch, вместо параметра method.
Значение параметра value может быть одним или несколькими. Если значение одно, оно может быть записано как value="/index.html". Если значений несколько, они должны быть записаны как value=["/", "/index.html", "/index"].
Параметр method представляет собой HTTP-глагол (метод), такой как GET, POST, PUT, DELETE, PATCH и т. д. Регистр не имеет значения, но рекомендуется использовать верхний регистр.
Пример:
/**
* 首页 маршрута.
* @RequestMapping("")
*/
class IndexController {
/**
* 首页.
* @RequestMapping(value=["/", "/index.html", "/index"], method="GET")
*/
public function index() {
// put your logic here
echo "hello moto!";
}
}
Получение общих параметров запроса
Параметры пути
Для получения параметров пути используйте метод RestHttpRequest::getPathValue(). Обратите внимание, что множественные маршруты не поддерживают параметры пути.
Например, при доступе к пути /users/97
будет получен идентификатор пользователя 97
:
/**
* @RequestMapping("/users")
*/
class UserController {
/**
* @RequestMapping(value="/{userId}", method="GET")
*/
public function userInfo() {
$userId = RestHttpRequest::getGet("userId");
echo $userId;
}
}
Параметры запроса
Параметры запроса можно получить с помощью методов RestHttpRequest::getGet() или RestHttpRequest::getParameterAsObject(), а также с помощью метода RestHttpRequest::getPageParam() для получения объекта разбивки на страницы.
Метод RestHttpRequest::getGet() используется для получения отдельных параметров пути, а метод RestHttpRequest::getParameterAsObject() — для получения одного или нескольких параметров в виде объекта.
Применение метода RestHttpRequest::getGet():
При доступе к пути /users?name=张
будет получено значение параметра name:
/**
* @RequestMapping("/users")
*/
class UserController {
/**
* @RequestMapping(value="", method="GET")
*/
public function userList() {
$name = RestHttpRequest::getGet("name");
echo $name;
}
}
Применение метода RestHttpRequest::getParameterAsObject():
При доступе к пути /users?name=张&mobile=1360000
будут получены значения параметров name и mobile в виде объекта:
Определите объект приёма, QueryForm:
final class QueryForm {
private $_name;
private $_mobile;
public function getName() {
return $this->_name;
}
public function setName($name) {
$this->_name = $name;
}
public function getMobile() {
return $this->_mobile;
}
public function setMobile($mobile) {
$this-_mobile = $mobile;
}
}
В классе UserController используйте метод RestHttpRequest::getParameterAsObject() для получения объекта QueryForm:
/**
* @RequestMapping("/users")
*/
class UserController {
/**
* @RequestMapping(value="", method="GET")
*/
public function userList() {
$queryForm = RestHttpRequest::getParameterAsObject(new QueryForm());
var_export($queryForm);
}
}
Тело параметров
Тело параметров можно получить с помощью метода RestHttpRequest::getBody().
Пример получения тела содержимого {«username»: «小红», «mobile»: «13800000000», «age»: «18»}
:
Определите принимающий объект, UserForm:
final class UserForm {
private $_name;
private $_mobile;
private $_age;
public function getName() {
return $this->_name;
}
public function setName($name) {
$this-name = $name;
}
public function getMobile() {
return $this->_mobile;
}
public function setMobile($mobile) {
$this-_mobile = $mobile;
}
public function getAge() {
return $this->_age;
}
public function setAge($age) {
$this-_age = $age;
}
}
В классе UserController используйте метод RestHttpRequest::getBody() для получения объекта UserForm или массива:
/**
* @RequestMapping("/users")
*/
class UserController {
/**
* @RequestMapping(value="", method="POST")
*/
public function newUser() {
//获取为对象
$userForm =
``` **Данные проверки**
В запросе представлен фрагмент кода на языке PHP, в котором описываются аннотации для валидации данных. Эти аннотации используются для проверки правильности ввода данных в формах.
Аннотации позволяют задать правила проверки для различных полей формы. В запросе представлены следующие аннотации:
* @length — проверяет длину строки;
* @notnull — проверяет наличие значения;
* @mobile — проверяет формат номера телефона;
* @email — проверяет формат адреса электронной почты;
* @domain — проверяет домен;
* @date — проверяет соответствие формата даты;
* @range — проверяет диапазон значений;
* @int — проверяет тип и диапазон целочисленных значений;
* @ipv4 — проверяет IPv4-адрес;
* @ipv6 — проверяет IPv6-адрес;
* @inArray — проверяет значение по списку;
* @notEmpty — проверяет непустое значение;
* @customer — позволяет задать пользовательскую функцию проверки.
**Пример использования**
Далее в запросе приведён пример создания класса MessageVo, который содержит поля с аннотациями для проверки данных. Класс MessageVo используется для представления сообщения.
Также в запросе есть пример использования этого класса в контроллере MessagesController. Контроллер MessagesController обрабатывает запросы на получение сообщений.
**Данные ответа**
Данные ответа представляют собой свободный формат без специальных правил и форматов. Для формирования ответов в запросе используются классы RestHttpResponse и RestTpl.
RestHttpResponse предоставляет методы для создания ответов, а RestTpl — простой механизм шаблонов.
**AOP (аспектно-ориентированное программирование)**
AOP позволяет добавлять дополнительную логику к коду без изменения основной функциональности. В запросе приведён пример реализации аспекта AopExample, который выполняет действия до и после обработки запроса.
Для использования AOP необходимо создать аспект и зарегистрировать его в системе. ```
@AopExample(param1="test",param2="test2")
* @return void
*/
public function index() {
$this->_tpl->assign('app_name', 'RESTPHP 3.0');
$this-> _tpl->display('index.tpl');
}
}
Официальный сайт: https://www.restphp.com
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )