Coder Social home page Coder Social logo

dragon-treasure-v2's Introduction

Dragon Treasure

  • Api plaform v3
  • symfony 6.3.10
  • docker (postgreSQL)
  • PHP 8.1

helper

Debug la configuration actuelle

php bin/console debug:config api_platform

Montre toute la configuration possible

php bin/console config:dump api_platform

stateless

Si la session est utilisé pour s'authentifier, modification du stateless dans la config de API Platform

api_platform:
    defaults:
        stateless: false // default true

Documentation

Désactiver la documentation config/packages/api_platform.yaml

Lorsque enable_docs: false, cela supprime la page d'accueil de l'API et la documentation

  • l'url /api/docs.json ou /api/docs.jsonldretourne une 404 (documentation)
  • l'url /api retourne une 500 (Page d'acceuil de l'api), car l'url vers la documention n'existe plus (/api/docs.json),
api_platform:
    enable_docs: false

Désactiver le entry_point (url: /api)

Désactive seulement la page d'accueil de l'API pas la documentation, retourne une 404

api_platform:
    entry_point: false

Désactiver la documentation swagger

api_platform:
    enable_swagger: false
    enable_swagger_ui: false

Test

Run all tests

symfony php bin/phpunit

Run only one test

symfony php bin/phpunit --filter=<methodeTestName>

Embedded Relation

Création d'un trésor, lié à un utilisateur existant dans la base de données, et modification du nom d'utilisateur de l'utilisateur.. (method : POST)

Use "id" not "@id"

{
    "name": "A shiny thing",
    "value": 1000,
    "coolFactor": 5,
    "owner": {
        "id": "/api/users/16",
        "username": "Batman"
    },
    "description": "It sparkles when I wave it in the air."
}

Put Operation

Dans API Platform 4, l'opartion PUT se comportera comme une modification totale et non partiel (selon la spécification HTTP). Avec l'utilisation de PUT, vous devez envoyer tous les champs, même ceux qui ne changent pas. Sinon, ils seront définis sur null.

Pour résoudre ce problème globalement pour toutes vos ressources à la fois, vous pouvez ajouter ceci par défaut dans la configuration de l'API Platform :

# config/packages/api_platform.yaml
api_platform:
    defaults:
    extra_properties:
        standard_put: true

Ou alors définir le nouveau comportement de PUT pour certaine ApiResource :

#[ORM\Entity(repositoryClass: FooRepository::class)]
#[ApiResource(
    shortName: "Foo",
    description: 'A random description',
    operations: [
        new Get(),
        new GetCollection(),
        new Put()
    ],
    extraProperties: [
        'standard_put' => true,
    ],
)]

Custom Normalizer

Une solution de contournement possible, qui fonctionnerait avec le nouveau TraceableNormalizer, consiste à utiliser le nouvel Autowire attribut :

class UserNormalizer implements NormalizerInterface
{
    public function __construct(
        #[Autowire(service: 'api_platform.jsonld.normalizer.item')]
        private readonly NormalizerInterface $normalizer,
    ) {
    }
}

OU bien :

class UserNormalizer implements NormalizerInterface
{
    public function __construct(
        private readonly NormalizerInterface $normalizer,
    ) {
    }
}
services:
    App\Serializer\UserNormalizer:
        arguments:
            $normalizer: '@api_platform.jsonld.normalizer.item'

use '@serializer.normalizer.object' symfony classic

Conditional property : ApiProperty

Si cette expression renvoie false, la propriété isPublished ne sera pas incluse dans l'API : elle ne sera ni lisible ni inscriptible.

class DragonTreasure
{
    #[ApiProperty(security: 'is_granted("ROLE_ADMIN")')]
    #[Groups(['treasure:read', 'treasure:write'])]
    private bool $isPublished = false;
}

dragon-treasure-v2's People

Contributors

ludovicjj avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.