Symfonyのフォーム処理で学ぶ!APIと連携したJSON送信の基本を初心者向けに解説
生徒
「Symfonyのフォームからデータを送るときに、APIに直接送る方法ってありますか?」
先生
「Symfonyではフォームで入力されたデータを、JSON形式に変換してAPIへ送信するしくみを作れますよ。」
生徒
「JSONって聞いたことがありますが、どうして必要なんですか?」
先生
「JSONはデータをやり取りするための文章のようなもので、APIと連携するときによく使われます。ではSymfonyのフォームとAPIをどうつなぐか、順番に見ていきましょう。」
1. Symfonyのフォーム処理とAPI連携とは?
Symfonyのフォーム処理は、画面に表示される入力欄を作ったり、入力された値をまとめて取得したりするためのしくみです。たとえば「名前」「メールアドレス」「問い合わせ内容」を入力して送信するようなフォームを簡単に作れます。
一方で、現代のWebアプリケーションでは、画面に入力した情報を別のサーバーのAPIへ送信することが増えています。このAPIとのやり取りで最もよく使われる形式がJSON(ジェイソン)です。
JSONとは、「データの内容をわかりやすく文章として並べたもの」で、辞書のように「名前」と「値」がセットで表現されます。SymfonyのフォームはPHP内部でデータを扱いますが、APIに送るときはJSONに変換して送信する必要があります。
2. JSON形式のデータとは?初心者向けのイメージ解説
JSONは、難しいものと思われがちですが、実はとてもシンプルです。例えば、学校の名簿の表を思い浮かべてください。「名前:山田」「年齢:14」「クラス:1年1組」といった情報が横に並んでいます。これをコンピュータ向けに整理したものがJSONだと考えると理解しやすいです。
Symfonyのフォームで入力されたデータも、この名簿のように「入力項目のラベル」と「入力された内容」がセットになっているため、JSONに変換しやすくなっています。
3. SymfonyのフォームをAPIに送る流れ
Symfonyでフォームの内容をAPIに送信する流れは、実はとても整理されています。以下のように動作します。
- ユーザーが入力フォームにデータを入力して送信する
- Symfonyが入力データを受け取ってバリデーション(正しい形式か確認)をする
- データが正しければJSON形式に変換する
- APIのURLに向けて送信する
このように、画面からAPIまでのデータの旅路が整理されているため、初心者でも理解しやすい構造です。
4. SymfonyでJSONを作って送るサンプルコード
ここでは、Symfonyのコントローラでフォーム送信後にAPIへJSONを送信するコード例を紹介します。コードの中は日本語の文字数に含めません。
use Symfony\Component\HttpClient\HttpClient;
public function sendForm(Request $request)
{
$form = $this->createForm(ContactType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
$client = HttpClient::create();
$response = $client->request('POST', 'https://example.com/api/contact', [
'json' => $data
]);
$result = $response->getContent();
}
return $this->render('contact/form.html.twig', [
'form' => $form->createView(),
]);
}
SymfonyのHttpClientは、外部のAPIにデータを送るための便利な道具です。「json => $data」と書くことで、自動でJSON形式に変換して送ってくれます。
5. JSON送信後にAPIから返ってくるレスポンスとは?
APIはただ受け取るだけではなく、多くの場合、結果を返してくれます。たとえば「送信成功」「エラーがあります」「登録が完了しました」といった情報です。Symfony側ではこの返ってきた内容を確認し、画面にメッセージとして表示することもできます。
APIのレスポンスもJSON形式で返ってくることが多く、Symfonyではその内容を簡単に解析できます。これにより、フォーム画面とAPIの連携がスムーズに行えるようになります。
6. フォームとAPIを連携させるメリット
SymfonyのフォームとAPIを連携することには多くのメリットがあります。
- フロントエンドとバックエンドの役割を明確に分離できる
- スマホアプリや他のWebサービスと同じAPIを共有できる
- データの受け渡しがJSON形式で統一され、扱いやすい
特に近年はマイクロサービス化が進み、APIを中心にした構成が主流となっているため、SymfonyでAPI連携を理解することは長く役立つ知識になります。