Zum Hauptinhalt springen
Nicht aus der Schweiz? Besuchen Sie lehmanns.de
Absinthe for Elixir Developers -  William Smith

Absinthe for Elixir Developers (eBook)

The Complete Guide for Developers and Engineers
eBook Download: EPUB
2025 | 1. Auflage
250 Seiten
HiTeX Press (Verlag)
978-0-00-097401-3 (ISBN)
Systemvoraussetzungen
8,48 inkl. MwSt
(CHF 8,25)
Der eBook-Verkauf erfolgt durch die Lehmanns Media GmbH (Berlin) zum Preis in Euro inkl. MwSt.
  • Download sofort lieferbar
  • Zahlungsarten anzeigen

'Absinthe for Elixir Developers'
'Absinthe for Elixir Developers' is a comprehensive guide that bridges the powerful functional programming capabilities of Elixir with the expressive flexibility of GraphQL, as implemented through Absinthe. The book opens with a systematic foundation in both GraphQL's architecture and Elixir's renowned concurrency model, delving into how Absinthe leverages the strengths of the Elixir/Erlang ecosystem to create scalable and maintainable APIs. Thoughtful comparisons between Absinthe and other GraphQL server frameworks, along with best practices for Plug, Phoenix, and core Elixir patterns, set the stage for a deeper exploration of robust API design.
Progressing from fundamentals to advanced applications, the book covers the nuances of schema design, resolver optimization, data validation, and the composition of modular, versioned GraphQL services. Readers learn to implement efficient data loading strategies, secure authentication flows, and manage real-time features such as subscriptions using Phoenix PubSub. With dedicated chapters on middleware, plugins, security, performance, and schema federation, the text provides actionable patterns and architectures to meet the demands of modern, distributed systems.
Rounding out the practical focus, the book features rigorous testing strategies, production-grade deployment techniques, and insightful case studies drawn from real-world Absinthe applications. Coverage of advanced operations-including multi-tenant architectures, disaster recovery, and cross-cloud deployments-ensures readers are equipped not only to build exceptional GraphQL APIs, but also to operate and evolve them at scale. Whether you are transitioning legacy systems or architecting from scratch, 'Absinthe for Elixir Developers' offers the definitive roadmap for building resilient, performant, and future-proof web services.

Chapter 2
Defining and Organizing GraphQL Schemas


Dive into the craft of constructing expressive, future-proof GraphQL schemas in Elixir. In this chapter, we untangle the art and rigor behind modeling complex domains using Absinthe, showing how thoughtful schema design empowers maintainable APIs that evolve alongside your application. Whether you are scaling up from a greenfield prototype or wrangling sprawling production schemas, discover both foundational and advanced techniques to keep your schema modular, clear, and robust.

2.1 Types, Fields, and Arguments in Depth


The GraphQL type system serves as the foundation for crafting precise, robust APIs by rigorously specifying the schema’s structure and behavior. Absinthe, a sophisticated GraphQL toolkit for Elixir, faithfully implements this type system, extending it with a functional programming paradigm and seamless integration into Elixir applications. At the core, Absinthe organizes types into scalar, object, enum, and custom types, each fulfilling a distinct role in schema definition.

Scalar Types

Scalar types represent the indivisible leaf nodes of the schema’s type graph. Absinthe provides built-in scalar types such as :string, :integer, :float, :boolean, and :id. These types map directly to Elixir primitives and include validation logic enforcing the correct value formats during query parsing and execution.

The declaration of a scalar type in Absinthe is implicit when using built-in scalars. For custom scalar implementations, the scalar macro is used alongside custom parsing and serialization functions, allowing strict control over input/output formats:

scalar :email do 
  description "A valid email address" 
 
  parse &MyApp.Schema.Scalars.Email.parse/1 
  serialize &MyApp.Schema.Scalars.Email.serialize/1 
end

Here, parse/1 transforms raw input into an Elixir structure or raises an error if invalid, while serialize/1 converts Elixir data to a format consumable by clients.

Object Types and Fields

Object types encapsulate grouped fields, modeling entities and their relationships. Defining an object type uses the object macro with a block enumerating its fields. Each field requires a name and type, and may include optional arguments, resolvers, and descriptive metadata.

object :user do 
  field :id, non_null(:id) 
  field :name, :string 
  field :age, :integer 
end

Absinthe’s type system enforces nullability via the non_null/1 modifier, ensuring explicit schema contracts. Fields defined without non_null accept null values by default.

Arguments provide parameterization to fields, enabling dynamic data retrieval tailored to client requests. Arguments are specified within a field block, defining their name, type, default values, and validation constraints as needed.

field :posts, list_of(:post) do 
  arg :limit, :integer, default_value: 10 
  resolve &Resolvers.Post.list_user_posts/3 
end

Here, the posts field accepts a limit argument restricting the number of returned posts. Argument types are subject to the same validation pipeline as other types, guaranteeing safe execution and predictable schema behavior.

Enumerated Types

Enums represent a fixed set of allowed string values, simplifying data modeling where constrained options exist. Declaring an enum utilizes the enum macro:

enum :role do 
  value :admin, as: "ADMIN" 
  value :user, as: "USER" 
  value :guest, as: "GUEST" 
end

Mapping internal atoms to external string representations facilitates interoperability between Elixir code and GraphQL clients. Enums benefit from built-in validation rejecting invalid values both in query variables and literals.

Composing Nested Types

Absinthe supports type composition by nesting object types within fields, allowing the schema to represent complex, hierarchical data structures....

Erscheint lt. Verlag 24.7.2025
Sprache englisch
Themenwelt Mathematik / Informatik Informatik Programmiersprachen / -werkzeuge
ISBN-10 0-00-097401-3 / 0000974013
ISBN-13 978-0-00-097401-3 / 9780000974013
Informationen gemäß Produktsicherheitsverordnung (GPSR)
Haben Sie eine Frage zum Produkt?
EPUBEPUB (Adobe DRM)
Größe: 813 KB

Kopierschutz: Adobe-DRM
Adobe-DRM ist ein Kopierschutz, der das eBook vor Mißbrauch schützen soll. Dabei wird das eBook bereits beim Download auf Ihre persönliche Adobe-ID autorisiert. Lesen können Sie das eBook dann nur auf den Geräten, welche ebenfalls auf Ihre Adobe-ID registriert sind.
Details zum Adobe-DRM

Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belle­tristik und Sach­büchern. Der Fließ­text wird dynamisch an die Display- und Schrift­größe ange­passt. Auch für mobile Lese­geräte ist EPUB daher gut geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen eine Adobe-ID und die Software Adobe Digital Editions (kostenlos). Von der Benutzung der OverDrive Media Console raten wir Ihnen ab. Erfahrungsgemäß treten hier gehäuft Probleme mit dem Adobe DRM auf.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen eine Adobe-ID sowie eine kostenlose App.
Geräteliste und zusätzliche Hinweise

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

Mehr entdecken
aus dem Bereich
Apps programmieren für macOS, iOS, watchOS und tvOS

von Thomas Sillmann

eBook Download (2025)
Carl Hanser Verlag GmbH & Co. KG
CHF 40,95
Apps programmieren für macOS, iOS, watchOS und tvOS

von Thomas Sillmann

eBook Download (2025)
Carl Hanser Verlag GmbH & Co. KG
CHF 40,95