Добро пожаловать в RestPHP, текущая версия 3.1.0.
/users/{userId}
или /users/{userId}/orders/{orderId}
.location / {
index index.php;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?$1 last;
}
}
Загрузка файлов происходит автоматически, нет необходимости использовать require или include в логическом коде. Существует две области загрузки файлов: одна — область кода проекта, а другая — область lib, которая обычно используется для кода сторонних плагинов.
Механизм загрузки файлов осуществляется через использование пространств имён и имён классов для автоматического запроса соответствия, поэтому имя класса должно соответствовать имени файла.
Используйте @RequestMapping, параметры: value, method.
Теперь также можно использовать ключевые слова действия аннотации, такие как @Get, @Post, @Put, @Delete, @Patch, без необходимости в параметрах метода.
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() {
// поместите сюда свою логику
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 используется для получения одного или нескольких параметров в виде объекта.
1. Пример использования RestHttpRequest::getGet()
Доступ path/users?Name=Zhang
, получите значение параметра name:
/**
* @RequestMapping("/users")
*/
class UserController {
/**
* @RequestMapping(value="", method="GET")
*/
public function userList() {
$name = RestHttpRequest::getGet("name");
echo $name;
}
}
2. Пример использования RestHttpRequest::getParameterAsObject()
Доступ к пути /users?Name=Zhang&mobile=1360000
, извлеките объекты запроса для имени и мобильного телефона.
Определите объект получателя, 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": "Xiaohong", "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 = RestHttpRequest::getBody(new UserForm());
var_export($userForm);
// Извлечение в виде массива
$arrUser = RestHttpRequest::getBody();
var_dump($arrUser);
}
}
Фреймворк предоставляет следующие формы аннотаций для проверки:
@Length (min=минимальная длина, max=максимальная длина, message=сообщение об ошибке)
@Notnull (message=сообщение об ошибке)
@Mobile (message=сообщение об ошибке)
@Email (message=сообщение об ошибке)
@Domain (message=сообщение об ошибке)
@Date (format=формат даты, message=сообщение об ошибке)
@Range (min=минимальная длина, max=максимальная длина, message=сообщение об ошибке)
@Int (min=минимальная длина, max=максимальная длина, message=сообщение об ошибке)
@IPv4 (message=сообщение об ошибке)
@IPv6 (message=сообщение об ошибке)
@InArray (value=[дополнительное значение 1 | дополнительное значение 2], message=сообщение об ошибке)
@NotEmpty (message=сообщение об ошибке)
@Customer (method=пользовательский метод проверки, message=подсказка об ошибке)
Пример использования:
Создайте MessageVo:
<?php
namespace classes\controller\api\vo;
/**
* Class MessageVo
* @package classes\controller\api\vo
*/
class MessageVo {
/**
* 客户名称.
* @length(min=1,max=20,message=名字输入长度为1~20个字符)
* @var string.
*/
private $_name;
/**
* 感兴趣的产品.
* @length(min=1,max=50,message=感兴趣的产品输入长度为1-50个字符)
* @var string
*/
private $_product;
/**
* 手机号码.
* @mobile(message=手机号不正确)
* @var string
*/
private $_mobile;
/**
* 更多说明
* @length(max=255,message=更多说明长度不能超过255字)
* @var string
*/
private $_more;
/**
* @return string
*/
public function getName()
{
return $this->_name;
}
/**
* @param string $name
*/
public function setName($name)
{
$this->_name = $name;
}
/**
* @return string
*/
public function getProduct()
{
return $this->_product;
}
/**
* @param string $product
*/
public function setProduct($product)
{
$this->_product = $product;
}
/**
* @return string
*/
public function getMobile()
{
return $this->_mobile;
}
/**
* @param string $mobile
*/
public function setMobile($mobile)
{
$this->_mobile = $mobile;
}
/**
* @return string
*/
public function getMore()
{
return $this->_more;
}
/**
* @param string $more
*/
public function setMore($more)
{
$this->_more = $more;
}
}
Использование в MessagesController: ```
getProcessParam()); } /** * @param AopParam $aopParam * @return void */ function after($aopParam) { // TODO: Реализовать метод after(). } } ``` Используя AOP (запустите ссылочный код после сборки, чтобы увидеть эффект): ```php _tpl = new RestTpl(); $this->_tpl->caching = false; } /** * @Get (value = "") * @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 )