44 < meta charset ="utf-8 ">
55 < meta content ="width=device-width, initial-scale=1.0 " name ="viewport ">
66 < title > JSON:API .NET Core</ title >
7- < meta content ="" name ="descriptison ">
8- < meta content ="" name ="keywords ">
7+ < meta content ="A framework for building json:api compliant REST APIs using .NET Core and Entity Framework Core " name ="description ">
8+ < meta content ="jsonapidotnetcore jsonapi json:api dotnetcore " name ="keywords ">
99 < link href ="favicon.ico " rel ="icon ">
1010 < link href ="favicon.ico " rel ="apple-touch-icon ">
1111 < link href ="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i|Raleway:300,300i,400,400i,600,600i,700,700i " rel ="stylesheet ">
@@ -63,71 +63,72 @@ <h4>Extensibility</h4>
6363 </ div >
6464 </ section >
6565 < section id ="services " class ="services section-bg ">
66- < div class ="container ">
67- < div class ="section-title " data-aos ="fade-up ">
68- < h2 > Features</ h2 >
69- < p > The following features are supported, from HTTP all the way down to the database</ p >
70- </ div >
71- < div class ="row ">
72- < div feature class ="col-md-6 col-lg-3 d-flex align-items-stretch " data-aos ="zoom-in " data-aos-delay ="100 " id ='filter '>
73- < div class ="icon-box ">
74- < div class ="icon "> < i class ="bx bxs-filter-alt "> </ i > </ div >
75- < h4 class ="title "> Filtering</ h4 >
76- < p class ="description "> Perform compound filtering using the < code > filter</ code > query string parameter</ p >
77- </ div >
78- </ div >
79- < div feature class ="col-md-6 col-lg-3 d-flex align-items-stretch " data-aos ="zoom-in " data-aos-delay ="200 " id ='sort '>
80- < div class ="icon-box ">
81- < div class ="icon "> < i class ="bx bx-sort-z-a "> </ i > </ div >
82- < h4 class ="title "> Sorting</ h4 >
83- < p class ="description "> Order resources on one or multiple attributes using the < code > sort</ code > query string parameter</ p >
84- </ div >
85- </ div >
86- < div feature class ="col-md-6 col-lg-3 d-flex align-items-stretch " data-aos ="zoom-in " data-aos-delay ="300 " id ='pagination '>
87- < div class ="icon-box ">
88- < div class ="icon "> < i class ="bx bx-note "> </ i > </ div >
89- < h4 class ="title "> Pagination</ h4 >
90- < p class ="description "> Leverage the benefits of paginated resources with the < code > page</ code > query string parameter</ p >
91- </ div >
92- </ div >
93- < div feature class ="col-md-6 col-lg-3 d-flex align-items-stretch " data-aos ="zoom-in " data-aos-delay ="400 " id ='selection '>
94- < div class ="icon-box ">
95- < div class ="icon "> < i class ="bx bxs-select-multiple "> </ i > </ div >
96- < h4 class ="title "> Sparse fieldset selection</ h4 >
97- < p class ="description "> Get only the data that you need using the < code > fields</ code > query string parameter</ p >
98- </ div >
99- </ div >
100- </ div >
101- < div class ="row ">
102- < div feature class ="col-md-6 col-lg-3 d-flex align-items-stretch " data-aos ="zoom-in " data-aos-delay ="100 " id ='include '>
103- < div class ="icon-box ">
104- < div class ="icon "> < i class ="bx bxs-vector "> </ i > </ div >
105- < h4 class ="title "> Relationship inclusion</ h4 >
106- < p class ="description "> Side-load related resources of nested relationships using the < code > include</ code > query string parameter</ p >
107- </ div >
108- </ div >
109- < div feature class ="col-md-6 col-lg-3 d-flex align-items-stretch " data-aos ="zoom-in " data-aos-delay ="100 " id ='security '>
110- < div class ="icon-box ">
111- < div class ="icon "> < i class ='bx bxs-lock '> </ i > </ div >
112- < h4 class ="title "> Security</ h4 >
113- < p class ="description "> Configure permissions, such as view/create/change/sort/filter of attributes and relationships</ p >
114- </ div >
115- </ div >
116- < div feature class ="col-md-6 col-lg-3 d-flex align-items-stretch " data-aos ="zoom-in " data-aos-delay ="100 " id ='validation '>
117- < div class ="icon-box ">
118- < div class ="icon "> < i class ='bx bx-check-double '> </ i > </ div >
119- < h4 class ="title "> Validation</ h4 >
120- < p class ="description "> Validate incoming requests using built-in ASP.NET Core < code > ModelState</ code > validation, which works seamlessly with partial updates</ p >
121- </ div >
122- </ div >
123- < div feature class ="col-md-6 col-lg-3 d-flex align-items-stretch " data-aos ="zoom-in " data-aos-delay ="200 " id ='customizable '>
124- < div class ="icon-box ">
125- < div class ="icon "> < i class ='bx bxs-category-alt '> </ i > </ div >
126- < h4 class ="title "> Customizable</ h4 >
127- < p class ="description "> Use various extensibility points to intercept and run custom code, besides just model annotations</ p >
128- </ div >
129- </ div >
130- </ div >
66+ < div class ="container ">
67+ < div class ="section-title " data-aos ="fade-up ">
68+ < h2 > Features</ h2 >
69+ < p > The following features are supported, from HTTP all the way down to the database</ p >
70+ </ div >
71+ < div class ="row ">
72+ < div feature class ="col-md-6 col-lg-3 d-flex align-items-stretch " data-aos ="zoom-in " data-aos-delay ="100 " id ='filter '>
73+ < div class ="icon-box ">
74+ < div class ="icon "> < i class ="bx bxs-filter-alt "> </ i > </ div >
75+ < h4 class ="title "> Filtering</ h4 >
76+ < p class ="description "> Perform compound filtering using the < code > filter</ code > query string parameter</ p >
77+ </ div >
78+ </ div >
79+ < div feature class ="col-md-6 col-lg-3 d-flex align-items-stretch " data-aos ="zoom-in " data-aos-delay ="200 " id ='sort '>
80+ < div class ="icon-box ">
81+ < div class ="icon "> < i class ="bx bx-sort-z-a "> </ i > </ div >
82+ < h4 class ="title "> Sorting</ h4 >
83+ < p class ="description "> Order resources on one or multiple attributes using the < code > sort</ code > query string parameter</ p >
84+ </ div >
85+ </ div >
86+ < div feature class ="col-md-6 col-lg-3 d-flex align-items-stretch " data-aos ="zoom-in " data-aos-delay ="300 " id ='pagination '>
87+ < div class ="icon-box ">
88+ < div class ="icon "> < i class ="bx bx-note "> </ i > </ div >
89+ < h4 class ="title "> Pagination</ h4 >
90+ < p class ="description "> Leverage the benefits of paginated resources with the < code > page</ code > query string parameter</ p >
91+ </ div >
92+ </ div >
93+ < div feature class ="col-md-6 col-lg-3 d-flex align-items-stretch " data-aos ="zoom-in " data-aos-delay ="400 " id ='selection '>
94+ < div class ="icon-box ">
95+ < div class ="icon "> < i class ="bx bxs-select-multiple "> </ i > </ div >
96+ < h4 class ="title "> Sparse fieldset selection</ h4 >
97+ < p class ="description "> Get only the data that you need using the < code > fields</ code > query string parameter</ p >
98+ </ div >
99+ </ div >
100+ </ div >
101+ < div class ="row ">
102+ < div feature class ="col-md-6 col-lg-3 d-flex align-items-stretch " data-aos ="zoom-in " data-aos-delay ="100 " id ='include '>
103+ < div class ="icon-box ">
104+ < div class ="icon "> < i class ="bx bxs-vector "> </ i > </ div >
105+ < h4 class ="title "> Relationship inclusion</ h4 >
106+ < p class ="description "> Side-load related resources of nested relationships using the < code > include</ code > query string parameter</ p >
107+ </ div >
108+ </ div >
109+ < div feature class ="col-md-6 col-lg-3 d-flex align-items-stretch " data-aos ="zoom-in " data-aos-delay ="100 " id ='security '>
110+ < div class ="icon-box ">
111+ < div class ="icon "> < i class ='bx bxs-lock '> </ i > </ div >
112+ < h4 class ="title "> Security</ h4 >
113+ < p class ="description "> Configure permissions, such as view/create/change/sort/filter of attributes and relationships</ p >
114+ </ div >
115+ </ div >
116+ < div feature class ="col-md-6 col-lg-3 d-flex align-items-stretch " data-aos ="zoom-in " data-aos-delay ="100 " id ='validation '>
117+ < div class ="icon-box ">
118+ < div class ="icon "> < i class ='bx bx-check-double '> </ i > </ div >
119+ < h4 class ="title "> Validation</ h4 >
120+ < p class ="description "> Validate incoming requests using built-in ASP.NET Core < code > ModelState</ code > validation, which works seamlessly with partial updates</ p >
121+ </ div >
122+ </ div >
123+ < div feature class ="col-md-6 col-lg-3 d-flex align-items-stretch " data-aos ="zoom-in " data-aos-delay ="200 " id ='customizable '>
124+ < div class ="icon-box ">
125+ < div class ="icon "> < i class ='bx bxs-category-alt '> </ i > </ div >
126+ < h4 class ="title "> Customizable</ h4 >
127+ < p class ="description "> Use various extensibility points to intercept and run custom code, besides just model annotations</ p >
128+ </ div >
129+ </ div >
130+ </ div >
131+ </ div >
131132 </ section >
132133 < section id ="code-example " class ="services ">
133134 < div class ="container ">
@@ -160,12 +161,12 @@ <h4 class="title">Resource</h4>
160161 public Person Author { get; set; }
161162
162163 [HasMany]
163- public ICollection<Revision > Revisions { get; set; }
164+ public ICollection<Revision > Revisions { get; set; }
164165
165166 [HasManyThrough(nameof(ArticleTags))]
166167 [NotMapped]
167- public ICollection<Tag > Tags { get; set; }
168- public ICollection<ArticleTag > ArticleTags { get; set; }
168+ public ICollection<Tag > Tags { get; set; }
169+ public ICollection<ArticleTag > ArticleTags { get; set; }
169170}</ code >
170171 </ pre >
171172 </ div >
@@ -274,4 +275,4 @@ <h4>Contact us</h4>
274275 < script src ="https://cdnjs.cloudflare.com/ajax/libs/aos/2.3.4/aos.js "> </ script >
275276 < script src ="styles/home.js "> </ script >
276277 </ body >
277- </ html >
278+ </ html >
0 commit comments