Table of Contents

Interface IResourceGraph

Namespace
JsonApiDotNetCore.Configuration
Assembly
JsonApiDotNetCore.dll

Metadata about the shape of JSON:API resources that your API serves and the relationships between them. The resource graph is built at application startup and is exposed as a singleton through Dependency Injection.

[PublicAPI]
public interface IResourceGraph

Methods

FindResourceType(string)

Attempts to get the metadata for the resource that is publicly exposed by the specified name. Returns null when not found.

ResourceType? FindResourceType(string publicName)

Parameters

publicName string

Returns

ResourceType

FindResourceType(Type)

Attempts to get metadata for the resource of the specified CLR type. Returns null when not found.

ResourceType? FindResourceType(Type resourceClrType)

Parameters

resourceClrType Type

Returns

ResourceType

GetAttributes<TResource>(Expression<Func<TResource, object?>>)

Gets the attributes for TResource that are targeted by the selector.

IReadOnlyCollection<AttrAttribute> GetAttributes<TResource>(Expression<Func<TResource, object?>> selector) where TResource : class, IIdentifiable

Parameters

selector Expression<Func<TResource, object>>

Should be of the form: (TResource resource) => new { resource.attribute1, resource.Attribute2 }

Returns

IReadOnlyCollection<AttrAttribute>

Type Parameters

TResource

The resource CLR type for which to retrieve attributes.

GetFields<TResource>(Expression<Func<TResource, object?>>)

Gets the fields (attributes and relationships) for TResource that are targeted by the selector.

IReadOnlyCollection<ResourceFieldAttribute> GetFields<TResource>(Expression<Func<TResource, object?>> selector) where TResource : class, IIdentifiable

Parameters

selector Expression<Func<TResource, object>>

Should be of the form: (TResource resource) => new { resource.Attribute1, resource.Relationship2 }

Returns

IReadOnlyCollection<ResourceFieldAttribute>

Type Parameters

TResource

The resource CLR type for which to retrieve fields.

GetRelationships<TResource>(Expression<Func<TResource, object?>>)

Gets the relationships for TResource that are targeted by the selector.

IReadOnlyCollection<RelationshipAttribute> GetRelationships<TResource>(Expression<Func<TResource, object?>> selector) where TResource : class, IIdentifiable

Parameters

selector Expression<Func<TResource, object>>

Should be of the form: (TResource resource) => new { resource.Relationship1, resource.Relationship2 }

Returns

IReadOnlyCollection<RelationshipAttribute>

Type Parameters

TResource

The resource CLR type for which to retrieve relationships.

GetResourceType(string)

Gets the metadata for the resource that is publicly exposed by the specified name. Throws an InvalidOperationException when not found.

ResourceType GetResourceType(string publicName)

Parameters

publicName string

Returns

ResourceType

GetResourceType(Type)

Gets the metadata for the resource of the specified CLR type. Throws an InvalidOperationException when not found.

ResourceType GetResourceType(Type resourceClrType)

Parameters

resourceClrType Type

Returns

ResourceType

GetResourceType<TResource>()

Gets the metadata for the resource of the specified CLR type. Throws an InvalidOperationException when not found.

ResourceType GetResourceType<TResource>() where TResource : class, IIdentifiable

Returns

ResourceType

Type Parameters

TResource

GetResourceTypes()

Gets the metadata for all registered resources.

IReadOnlySet<ResourceType> GetResourceTypes()

Returns

IReadOnlySet<ResourceType>