Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. # Graphql Directive {{tag>graphql directive deprecated skip include upppercase}} ## deprecated ### code <code py> @strawberry.type class DirectiveQuery: @strawberry.field( description="directive example", deprecation_reason="deprecated use other field" ) def directive_deprecated(self, info) -> str: return "result of directive_deprecated" </code> ### query <code> { directiveDeprecated } </code> ### result <code> { "data": { "directiveDeprecated": "result of directive_deprecated" } } </code> {{ https://i.imgur.com/AYXJv5A.jpg?500 }} ## skip & include ### code <code> @strawberry.type class DirectiveQuery: @strawberry.field(description="directive skip") def directive_skip(self) -> str: return "skip" @strawberry.field(description="directive include") def directive_include(self) -> str: return "include" </code> ### query <code> query ($skip: Boolean!, $include: Boolean!) { directiveSkip @skip(if: $skip) directiveInclude @include(if: $include) } </code> ### query variables <code> {"skip": false, "include": true} </code> ### result <code> { "data": { "directiveSkip": "skip", "directiveInclude": "include" } } </code> ## uppercase ### code <code py> @strawberry.type class DirectiveQuery: @strawberry.field(description="directive uppercase") def directive_uppercase(self) -> str: return "make uppercase" @strawberry.directive( locations=[DirectiveLocation.FIELD], description="Make string uppercase" ) def uppercase(value: str): return value.upper() schema = strawberry.Schema( query=Query, mutation=Mutation, directives=[uppercase], ) </code> ### query <code> { directiveUppercase @uppercase } </code> ### result <code> { "data": { "directiveUppercase": "MAKE UPPERCASE" } } </code> ### query <code> { normal: directiveUppercase uppercase: directiveUppercase @uppercase } </code> ### result <code> { "data": { "normal": "make uppercase", "uppercase": "MAKE UPPERCASE" } } </code> ## replace ### code <code py> @strawberry.type class Person: name: str = "Jess" @strawberry.type class DirectiveQuery: @strawberry.field def person(self) -> Person: return Person() </code> <code py> @strawberry.directive(locations=[DirectiveLocation.FIELD]) def replace(value: str, old: str, new: str): value = value.replace(old, new) return value schema = strawberry.Schema( query=Query, mutation=Mutation, directives=[uppercase, replace], ) </code> ### query <code> { person { name @replace(old: "J", new: "John") } } </code> ### result <code> { "data": { "person": { "name": "Johness" } } } </code> ## ref - https://github.com/strawberry-graphql/strawberry/blob/main/tests/schema/test_directives.py open/graphql-directive.txt Last modified: 2024/10/05 06:15by 127.0.0.1