Last updated:
0 purchases
gits strapi
This package is used to make it easier when you want to integrate with the strapi
Gits Strapi #
# Prerequisites
This library uses the gits_http package
# Yout must know
Requests return a response as an object which usually includes the following keys:
data: the response data itself, which could be: a single entry, as an object with the following keys:
id (number) attributes (object) meta (object) a list of entries, as an array of objects a custom response meta (object): information about pagination, publication state, available locales, etc. error (object, optional): information about any error thrown by the request
# Usage
First of all, initialize the gits_strapi in this way
final GitsStrapi strapi = GitsStrapi(
timeout: 30000,
showLog: true,
gitsInspector: GitsInspector(),
);
copied to clipboard
after that we can use some main functions like
Auth Login #
Used for standard strapi login needs, if there is a need beyond that then use another function
AuthResponse loginResponse = await strapi.login(
endpoint: Uri.parse("http://10.0.2.2:1337/api/auth/local"),
body: {"identifier": "identifier", "password": "password"});
copied to clipboard
Auth Register #
Used for standard strapi register needs, if there is a need beyond that then use another function
AuthResponse registerResponse = await strapi.register(
endpoint: Uri.parse("http://10.0.2.2:1337/api/auth/local/register"),
body: {
"username": "username",
"email": "email",
"password": "password"
});
copied to clipboard
Get Single Response #
Used to retrieve data for a single object, if you need to retrieve a lot of data use Get Collection Response
Uri endpointProductOne =
Uri.parse("http://10.0.2.2:1337/api/products/1").withParam(
const StrapiRequest(
populate: ["images"],
),
);
SingleResponse<DataResponse<ProductResponse>> singleResponse =
await strapi.getSingle(endpoint: endpointProductOne).then((value) {
var attr = ProductResponse.fromMap(value.data?.attributes);
var data = DataResponse(id: value.data?.id, attributes: attr);
return SingleResponse(data: data, meta: value.meta, error: value.error);
});
copied to clipboard
Get Collection Response #
Used to retrieve data based on a list of objects, if necessary retrieve single object data Get Single Response
Uri endpointProducts = Uri.parse("http://10.0.2.2:1337/api/products")
.withParam(
const StrapiRequest(page: 1, pageSize: 3, sort: ['id:desc']));
CollectionResponse<DataResponse<ProductResponse>> collectionResponse =
await strapi.getCollection(endpoint: endpointProducts).then((value) {
var data = <DataResponse<ProductResponse>>[];
value.data?.forEach((item) {
data.add(
DataResponse(
id: item.id,
attributes: ProductResponse.fromMap(item.attributes),
),
);
});
return CollectionResponse(
data: data, meta: value.meta, error: value.error);
});
copied to clipboard
(Get) Select #
Used for GET method requirements
Response select = await strapi.select(endpoint: Uri.parse("endpoint"));
copied to clipboard
(POST) Create #
Used for POST method requirements
var insertBody = {
"data": {
"name": "name",
"description": "description",
"price": 10000,
"stock": 5,
}
};
Response insert = await strapi.create(
endpoint: Uri.parse("http://10.0.2.2:1337/api/products"),
headers: {
'Authorization':
'Bearer eyJhxdcfOgJwUwI1NiIsInR5cCI6IkpXVCJ9.eyJaZcIvMiwfaWF0IjoxNjYxMjM2OTgwLCJleHAiOjE2NjM4Mjg5ODB9.Cb-wP8EUPUcwp76VD_IWqsw5nvi9xv0QqH0Ng4EB1UI'
},
body: insertBody);
copied to clipboard
(PUT) Update #
Used for PUT method requirements
var updateBody = {
"data": {
"name": "name",
"description": "description",
"price": 50000,
"stock": 3,
}
};
Response updateResponse = await strapi.update(
id: "1",
endpoint: Uri.parse("http://10.0.2.2:1337/api/products"),
headers: {
'Authorization':
'Bearer eyJhbGciOiJIazIwdivsPnRKDCI6IkpXVCJ9.eyJpZCI6MiwiaWF0IjoxNjYxMjM2OTUCLVJleHAiOjE2NjM4Mjg5ODB9.Cb-wP8EUPUcwp76VD_IWqsw5nvi9xv0QqH0Ng4EB1UI'
},
body: updateBody)
copied to clipboard
Delete #
Used for DELETE method requirement
Response deleteResponse = await strapi.delete(headers: {
'Authorization':
'Bearer eyJhbGciOiJIUzI1NiIsInCX5FCI6IkpXVCJ9.eyJpZCI6MiwiaWF0IjoxNjYxMjM2OTgwLCJleHA_1OjE2NjM4Mjg5ODB9.Cb-wP8EUPUcwp76VD_IWWsC5GFvi9xv0QqH0Ng4EB1UI'
}, endpoint: Uri.parse("http://10.0.2.2:1337/api/products"), id: "9");
copied to clipboard
# Helper
Strapi Request #
we have provided some required parameter requests such as:
populate `List
fields `List
sort `List
withCount `bool`
pageSize `pageSize`
page `page`
for an example like this
StrapiRequest(
fields: ['id','name'],
populate: ['images','transactions'],
sort: ['id:desc'],
page: 1,
pageSize: 10,
withCount: true,
);
copied to clipboard
Entity Mapper #
As for the need to convert Response to Entity which has been provided for some Base Response below:
SingleResponse
CollectionResponse
DataResponse
MetaResponse
PaginationResponse
ErrorResponse
AuthResponse
UserResponse
ThumbnailResponse
FormatsResponse
ImageResponse
how to use it like this for responses which have generic class
var collectionEntity = collectionResponse.toEntity(
(data) => data
.map((item) => (item as DataResponse)
.toEntity((attr) => (attr as ProductResponse).toEntity()))
.toList(),
);
copied to clipboard
if it doesn't have a generic class
ProductResponse().toEntity();
copied to clipboard
Additional information #
For additional information we have several main response bases that will be used frequently
SingleResponse : to handle response {"data (single object)","meta","error"}
CollectionResponse : to handle response {"data (is an array object)","meta","error"}
DataResponse : to handle response {"id","attributes"}
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.