首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony 4 REST API请求验证。(发布数据)

Symfony 4 REST API请求验证。(发布数据)
EN

Stack Overflow用户
提问于 2021-11-20 15:48:39
回答 1查看 135关注 0票数 0

我正在继续学习symfony,这一次,我想收到任何关于如何在存储请求发布数据之前正确验证它的想法。我正在尝试尽可能小的控制器。我读过关于DTO的文章。(使用它来实现验证)。我还看到我们可以使用实体注释来验证请求。示例:

代码语言:javascript
复制
use Symfony\Component\Validator\Constraints as Assert;
class Author
{
    /**
     * @Assert\NotBlank
     */
    private $name;
}

请给我一些例子,你如何在symfony rest api中验证传入的请求数据。作为一名Laravel开发人员,我可以说我们可以这样做:

代码语言:javascript
复制
public function store(Request $request)
{
    $validated = $request->validate([
        'title' => 'required|unique:posts|max:255',
        'body' => 'required',
    ]);

    // The blog post is valid...
}

或者我们可以使用TypeHinting:

代码语言:javascript
复制
    public function store(StorePostRequest $request)
    {
        // The incoming request is valid...
    
        // Retrieve the validated input data...
        $validated = $request->validated();
}

我们如何在symfony中做到这一点,节省瘦控制器的想法?

EN

回答 1

Stack Overflow用户

发布于 2021-11-20 21:59:20

您可以在实体中使用Assert注释,在控制器中使用ValidatorInterface

代码语言:javascript
复制
public function store(Request $request, ValidatorInterface $validator): json {
    $author = new Author();
    $author->setName($request->get('name'));
    // ... Hydrate $author properties ...

    $errors = $validator->validate($author);
    if (count($errors) > 0) {
        $errorsString = (string) $errors;
        return $this->json(['status' => 'error', 'message' => $errorsString]);
    }

    return $this->json(['status' => 'success', 'author' => $author);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70047470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档