我如何在环回后端使用改造来发出 "Include filter" in android 之类的请求?
How can I make request like "Include filter" in android using retrofit on loopback backend?
我想知道如何使用改装在 android 中发出 Include filter
请求。这是请求在环回中的样子。
{
"filter": {
"counts":["agendas"],
"include":["meetingHall"]
}
}
环回服务器的响应是这样的
{
"count": 1,
"rows": [
{
"meetingId": "2010-5-8",
"titleEn": "horticulture follow up final report.",
"descriptionEn": "Management Letter Gewane Collage ኣፈጉባኤ ፎረም tigray.pdf ኣፈጉባኤ ፎረም tigray.pdf የፌደራል መንግስት የህግ አወጣጥ.pdf የፌደራል መንግስት የህግ አወጣጥ.pdf",
"titleAm": "horticulture follow up final report.",
"descriptionAm": ".የአካባቢ ደንና አየር ንብረት ለውጥ ኣፈጉባኤ ፎረም tigray.pdf ኣፈጉባኤ ፎረም tigray.pdf የፌደራል መንግስት የህግ አወጣጥ.pdf የፌደራል መንግስት የህግ አወጣጥ.pdf",
"status": "FINISHED",
"finishDetail": {
"attendanceNo": 0,
"remark": ""
},
"postponeDetail": null,
"cancelDetail": null,
"startDateGe": "2018-09-10T00:00:00.000Z",
"startDateEt": "2010-13-05",
"startTimeGe": {
"hour": 10,
"minute": 0
},
"startTimeEt": {
"hour": 10,
"minute": 0
},
"isArchive": false,
"regularMeetingDetail": {
"meetingNo": 8,
"round": 5,
"year": 2010
},
"seenStatus": 0,
"id": "5b926b5b9fab48001459004e",
"meetingHallId": "5b926a899fab480014590049",
"userGroupIds": [
"5b926a5b9fab480014590045",
"5b926a619fab480014590046"
],
"createdAt": "2018-09-07T12:13:15.880Z",
"updatedAt": "2018-09-18T12:43:28.577Z",
"meetingTypeId": "5b92668c9fab480014590021",
"agendasCount": 1,
"meetingHall": {
"nameEn": "በቋሚ ኮሚቴ አዳራሽ\t",
"nameAm": "በቋሚ ኮሚቴ አዳራሽ\t",
"id": "5b926a899fab480014590049",
"createdAt": "2018-09-07T12:09:45.776Z",
"updatedAt": "2018-09-07T12:09:45.776Z",
"name": "",
"description": ""
}
}
]
}
因为响应中的其他属性已被服务器化,通常在当时不止一个请求需要...
我的观点是我想知道在 android.
中我的端点调用是什么样子的
样本api调用
@GET(ENDPOINT_MEETING)
@Headers(ApiHeader.API_AUTH_TYPE + HEADER_PARAM_SEPARATOR + ApiHeader.PROTECTED_API)
Observable<MeetingsResponse> loadMeetings(@Query("isArchive") Boolean isArchive);
这种请求可以参考here中loopback的官方页面
我怎样才能提出要求?我应该使用任何其他属性的查询吗?谢谢!
您可以像这样在您的请求中包含过滤器
@GET(ENDPOINT_MEETING)
@Headers(ApiHeader.API_AUTH_TYPE + HEADER_PARAM_SEPARATOR + ApiHeader.PROTECTED_API)
Observable<MeetingsResponse> loadMeetings(@Query("isArchive") Boolean isArchive,@Query("filter" String filter);
看起来您是在请求正文中发送此数据,因此请使用:
创建 class 您的请求正文,例如:
过滤器 FilterRequestWrapper.java :
public class FilterRequestWrapper {
/* {
"filter": {
"counts":["agendas"],
"include":["meetingHall"]
}
}
*/
@Expose
public FilterRequest filter;
public class FilterRequest {
@Expose
public List<String> counts;
@Expose
public List<String> include;
}
}
并像这样使用它:
@GET(ENDPOINT_MEETING)
@Headers(ApiHeader.API_AUTH_TYPE + HEADER_PARAM_SEPARATOR + ApiHeader.PROTECTED_API)
Observable<MeetingsResponse> loadMeetings(@Query("isArchive") Boolean isArchive, @Body FilterRequestWrapper filterRequestWrapper);
端点到API以及我如何称呼它
@GET(ENDPOINT_MEETING)
@Headers(ApiHeader.API_AUTH_TYPE + HEADER_PARAM_SEPARATOR + ApiHeader.PROTECTED_API)
Observable<MeetingsResponse> loadMeetings(@Query("filter") String meetingFilter);
我在 Presenter 中如何称呼它 class
getMvpView().showLoading();
getCompositeDisposable().add(getDataManager()
.loadMeetings("{ \"counts\":[\"agendas\"], \"include\":[\"meetingHall\"]}")
//.loadArchiveMeetings()
.subscribeOn(getSchedulerProvider().io())
.observeOn(getSchedulerProvider().ui())
.subscribe(meetingsResponse -> {
if (!isViewAttached()) {
return;
}
getMvpView().showMeetings(meetingsResponse.getMeetings());
},
throwable -> {
if (!isViewAttached()) {
return;
}
getMvpView().hideLoading();
if (!CommonUtils.getErrorMessage(throwable).isEmpty())
getMvpView().onError(CommonUtils.getErrorMessage(throwable));
}));
这就是我在 GET 请求中实现 过滤器 的方式。
我想知道如何使用改装在 android 中发出 Include filter
请求。这是请求在环回中的样子。
{
"filter": {
"counts":["agendas"],
"include":["meetingHall"]
}
}
环回服务器的响应是这样的
{
"count": 1,
"rows": [
{
"meetingId": "2010-5-8",
"titleEn": "horticulture follow up final report.",
"descriptionEn": "Management Letter Gewane Collage ኣፈጉባኤ ፎረም tigray.pdf ኣፈጉባኤ ፎረም tigray.pdf የፌደራል መንግስት የህግ አወጣጥ.pdf የፌደራል መንግስት የህግ አወጣጥ.pdf",
"titleAm": "horticulture follow up final report.",
"descriptionAm": ".የአካባቢ ደንና አየር ንብረት ለውጥ ኣፈጉባኤ ፎረም tigray.pdf ኣፈጉባኤ ፎረም tigray.pdf የፌደራል መንግስት የህግ አወጣጥ.pdf የፌደራል መንግስት የህግ አወጣጥ.pdf",
"status": "FINISHED",
"finishDetail": {
"attendanceNo": 0,
"remark": ""
},
"postponeDetail": null,
"cancelDetail": null,
"startDateGe": "2018-09-10T00:00:00.000Z",
"startDateEt": "2010-13-05",
"startTimeGe": {
"hour": 10,
"minute": 0
},
"startTimeEt": {
"hour": 10,
"minute": 0
},
"isArchive": false,
"regularMeetingDetail": {
"meetingNo": 8,
"round": 5,
"year": 2010
},
"seenStatus": 0,
"id": "5b926b5b9fab48001459004e",
"meetingHallId": "5b926a899fab480014590049",
"userGroupIds": [
"5b926a5b9fab480014590045",
"5b926a619fab480014590046"
],
"createdAt": "2018-09-07T12:13:15.880Z",
"updatedAt": "2018-09-18T12:43:28.577Z",
"meetingTypeId": "5b92668c9fab480014590021",
"agendasCount": 1,
"meetingHall": {
"nameEn": "በቋሚ ኮሚቴ አዳራሽ\t",
"nameAm": "በቋሚ ኮሚቴ አዳራሽ\t",
"id": "5b926a899fab480014590049",
"createdAt": "2018-09-07T12:09:45.776Z",
"updatedAt": "2018-09-07T12:09:45.776Z",
"name": "",
"description": ""
}
}
]
}
因为响应中的其他属性已被服务器化,通常在当时不止一个请求需要... 我的观点是我想知道在 android.
中我的端点调用是什么样子的样本api调用
@GET(ENDPOINT_MEETING)
@Headers(ApiHeader.API_AUTH_TYPE + HEADER_PARAM_SEPARATOR + ApiHeader.PROTECTED_API)
Observable<MeetingsResponse> loadMeetings(@Query("isArchive") Boolean isArchive);
这种请求可以参考here中loopback的官方页面 我怎样才能提出要求?我应该使用任何其他属性的查询吗?谢谢!
您可以像这样在您的请求中包含过滤器
@GET(ENDPOINT_MEETING)
@Headers(ApiHeader.API_AUTH_TYPE + HEADER_PARAM_SEPARATOR + ApiHeader.PROTECTED_API)
Observable<MeetingsResponse> loadMeetings(@Query("isArchive") Boolean isArchive,@Query("filter" String filter);
看起来您是在请求正文中发送此数据,因此请使用:
创建 class 您的请求正文,例如:
过滤器 FilterRequestWrapper.java :
public class FilterRequestWrapper {
/* {
"filter": {
"counts":["agendas"],
"include":["meetingHall"]
}
}
*/
@Expose
public FilterRequest filter;
public class FilterRequest {
@Expose
public List<String> counts;
@Expose
public List<String> include;
}
}
并像这样使用它:
@GET(ENDPOINT_MEETING)
@Headers(ApiHeader.API_AUTH_TYPE + HEADER_PARAM_SEPARATOR + ApiHeader.PROTECTED_API)
Observable<MeetingsResponse> loadMeetings(@Query("isArchive") Boolean isArchive, @Body FilterRequestWrapper filterRequestWrapper);
端点到API以及我如何称呼它
@GET(ENDPOINT_MEETING)
@Headers(ApiHeader.API_AUTH_TYPE + HEADER_PARAM_SEPARATOR + ApiHeader.PROTECTED_API)
Observable<MeetingsResponse> loadMeetings(@Query("filter") String meetingFilter);
我在 Presenter 中如何称呼它 class
getMvpView().showLoading();
getCompositeDisposable().add(getDataManager()
.loadMeetings("{ \"counts\":[\"agendas\"], \"include\":[\"meetingHall\"]}")
//.loadArchiveMeetings()
.subscribeOn(getSchedulerProvider().io())
.observeOn(getSchedulerProvider().ui())
.subscribe(meetingsResponse -> {
if (!isViewAttached()) {
return;
}
getMvpView().showMeetings(meetingsResponse.getMeetings());
},
throwable -> {
if (!isViewAttached()) {
return;
}
getMvpView().hideLoading();
if (!CommonUtils.getErrorMessage(throwable).isEmpty())
getMvpView().onError(CommonUtils.getErrorMessage(throwable));
}));
这就是我在 GET 请求中实现 过滤器 的方式。