Минимальная symfony настройка с аннотациями - PullRequest
1 голос
/ 25 января 2020

Я хочу создать простой API на основе Symfony framework.

Контроллеры уже реализованы.

1) Какая минимальная настройка пакетов composer мне нужна?

2) Как мне настроить рабочий индекс. php файл, который создает маршруты из аннотаций, соответствует URL-адресам и выводит ответ?

Спасибо очень много!

Вот пример кода одного из моих контроллеров, расположенных в src / Bitter / Cloud / Server / Controller / PhotosController. php:

<?php

namespace Bitter\Cloud\Server\Controller;

use Bitter\Cloud\Cloud;
use Bitter\Cloud\Services\PhotosService;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class PhotosController extends AbstractController
{
    protected Request $request;
    protected PhotosService $service;

    public function __construct()
    {
        $this->request = Request::createFromGlobals();
        $this->service = Cloud::getServices()->getPhotos();
    }

    /**
     * Send a request to fetch photos and videos from the photo service.
     *
     * @Route("/photos/get_photos")
     *
     * @link project://docs/services/photos/get-photos.md
     */
    public function getPhotos(): JsonResponse
    {
        $this->service->init();

        return new JsonResponse([
            "success" => true,
            "photos" => $this->service->getPhotos()
        ]);
    }
}

Все остальные контроллеры аналогичны.

Вот моя composer. json настройка:

{
  "name": "bitter/cloud-server",
  "description": "Cloud Server for PHP.",
  "license": "MIT",
  "type": "project",
  "homepage": "*********removed*********",
  "authors": [
    {
      "name": "*********removed*********",
      "email": "*********removed*********",
      "role": "Developer"
    }
  ],
  "minimum-stability": "dev",
  "repositories": [
    {
      "name": "bitter/cloud-api",
      "type": "vcs",
      "url": "git@bitbucket.org:*********removed*********"
    }
  ],
  "keywords": [
    "cloud",
    "php",
    "api"
  ],
  "support": {
    "issues": "*********removed*********"
  },
  "require": {
    "bitter/cloud-api": "*",
    "symfony/http-foundation": "5.0.0",
    "symfony/routing": "5.0.0",
    "symfony/config": "5.0.0",
    "doctrine/annotations": "1.8.0",
    "symfony/framework-bundle": "5.0.0",
    "doctrine/cache": "1.8.0"
  },
  "autoload": {
    "psr-4": {
      "Bitter\\Cloud\\Server\\": "src/Bitter/Cloud/Server"
    }
  }
}

Ответы [ 3 ]

0 голосов
/ 25 января 2020

Apiplatform может быть вашим лучшим решением для создания API на основе Symfony, хотя это полноценная система (json, json + ld, graphql, auth, документация, разбиение на страницы и т. Д. c ...).

Или, если вам просто нужна базовая c настройка, ваше решение может подойти (если вы используете Symfony скелет ). Просто настройте маршруты в аннотациях на вашем контроллере и возвращайте данные в формате JSON.

Что касается комплектов, которые вам нужны, это зависит от того, чего вы хотите достичь. комплект безопасности может быть хорошей идеей, если вам нужна, например, аутентификация. См. this do c, чтобы настроить аутентификацию для API в Symfony.

maker bundle очень полезен для создания объектов и миграций. Пакет Doctrine ORM очень удобен для хранения и извлечения данных из вашей базы данных и их обслуживания. Но все зависит только от вас, посмотрите некоторые популярные комплекты в Symfony.

0 голосов
/ 25 января 2020

Все, что вам нужно сделать, это создать простое приложение с composer:

composer create-project symfony/skeleton

, затем добавить пакет аннотаций:

composer require annotations

0 голосов
/ 25 января 2020

Существует множество способов использования API с composer. Наиболее известны следующие: https://symfony.com/doc/master/bundles/FOSRestBundle/index.html fosRestBundle и https://symfony.com/projects/apiplatform. Это зависит от ваших потребностей. c идея API

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...