繁体   English   中英

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

[英]Symfony 4 REST API Request validation. (POST DATA)

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

use Symfony\Component\Validator\Constraints as Assert;
class Author
{
    /**
     * @Assert\NotBlank
     */
    private $name;
}

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

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

    // The blog post is valid...
}

或者我们可以使用 TypeHinting:

    public function store(StorePostRequest $request)
    {
        // The incoming request is valid...
    
        // Retrieve the validated input data...
        $validated = $request->validated();
}

我们如何在 symfony 中做到这一点,从而节省薄 controller 的想法?

您可以在您的实体中使用 Assert 注释,并在您的 controller 中使用ValidatorInterface

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' => (string) $errorsString]);
    }

    return $this->json(['status' => 'success', 'author' => $author);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM