簡體   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