Wrap the common components in every API response using ASP.NET CORE 2 Middleware
up vote
0
down vote
favorite
I have the following POCO classes :
public class CountryResult : APIResult
{
public CountryResult()
{
Countries = new List<CountryDTO>();
}
public List<CountryDTO> Countries
{
get;
set;
}
}
public class APIResult
{
public Locale Locale
{
get;
set;
}
[JsonProperty("authorised")]
public bool Authorized
{
get;
set;
}
public string UserMessage
{
get;
set;
}
= "";
}
The json response should always to be consistent. The locale, authorised,userMessage are common in every payload response.
{
"countries": ,
"locale": {
"localisationIdentifier": "en",
"enabled": true,
"language": "en",
"country": "",
"description": "English",
"uuid": "37",
"name": "English",
"path": "/locales/en",
"rightToLeft": false,
"completeResponse": true,
"scriptDirection": "ltr"
},
"authorised": false,
"userMessage": ""
}
I developed a CommonResponseMiddleware (Middlware component) in order to implement this requirement.
public class CommonResponseMiddleware
{
private readonly RequestDelegate _next;
private ICommonService _commonService;
public CommonResponseMiddleware(RequestDelegate next, ICommonService commonService)
{
_next = next;
_commonService = commonService;
}
public async Task Invoke(HttpContext context)
{
var currentBody = context.Response.Body;
using (var memoryStream = new MemoryStream())
{
context.Response.Body = memoryStream;
// Hit the web api and get the result
await _next.Invoke(context);
context.Response.Body = currentBody;
memoryStream.Seek(0, SeekOrigin.Begin);
var readToEnd = new StreamReader(memoryStream).ReadToEnd();
var objResult = JsonConvert.DeserializeObject(readToEnd);
}
}
}
In the objResult I get the all the data for Entity: CountryResult but with all the properties of APIResult(locale, authorised,userMessage) still set to null.
How to setup the values of APIResult and return it as part of the complete payload?
Can anyone help me here to fix this issue by providing their guidance?
c# asp.net-core-2.0
add a comment |
up vote
0
down vote
favorite
I have the following POCO classes :
public class CountryResult : APIResult
{
public CountryResult()
{
Countries = new List<CountryDTO>();
}
public List<CountryDTO> Countries
{
get;
set;
}
}
public class APIResult
{
public Locale Locale
{
get;
set;
}
[JsonProperty("authorised")]
public bool Authorized
{
get;
set;
}
public string UserMessage
{
get;
set;
}
= "";
}
The json response should always to be consistent. The locale, authorised,userMessage are common in every payload response.
{
"countries": ,
"locale": {
"localisationIdentifier": "en",
"enabled": true,
"language": "en",
"country": "",
"description": "English",
"uuid": "37",
"name": "English",
"path": "/locales/en",
"rightToLeft": false,
"completeResponse": true,
"scriptDirection": "ltr"
},
"authorised": false,
"userMessage": ""
}
I developed a CommonResponseMiddleware (Middlware component) in order to implement this requirement.
public class CommonResponseMiddleware
{
private readonly RequestDelegate _next;
private ICommonService _commonService;
public CommonResponseMiddleware(RequestDelegate next, ICommonService commonService)
{
_next = next;
_commonService = commonService;
}
public async Task Invoke(HttpContext context)
{
var currentBody = context.Response.Body;
using (var memoryStream = new MemoryStream())
{
context.Response.Body = memoryStream;
// Hit the web api and get the result
await _next.Invoke(context);
context.Response.Body = currentBody;
memoryStream.Seek(0, SeekOrigin.Begin);
var readToEnd = new StreamReader(memoryStream).ReadToEnd();
var objResult = JsonConvert.DeserializeObject(readToEnd);
}
}
}
In the objResult I get the all the data for Entity: CountryResult but with all the properties of APIResult(locale, authorised,userMessage) still set to null.
How to setup the values of APIResult and return it as part of the complete payload?
Can anyone help me here to fix this issue by providing their guidance?
c# asp.net-core-2.0
Getting stuck through some errors to get it half-working, but was wondering if we could get an example with some code sample on this issue. I have been trying a lot but nothing working. Any help is much appreciated.
– santosh kumar patro
Nov 11 at 15:20
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I have the following POCO classes :
public class CountryResult : APIResult
{
public CountryResult()
{
Countries = new List<CountryDTO>();
}
public List<CountryDTO> Countries
{
get;
set;
}
}
public class APIResult
{
public Locale Locale
{
get;
set;
}
[JsonProperty("authorised")]
public bool Authorized
{
get;
set;
}
public string UserMessage
{
get;
set;
}
= "";
}
The json response should always to be consistent. The locale, authorised,userMessage are common in every payload response.
{
"countries": ,
"locale": {
"localisationIdentifier": "en",
"enabled": true,
"language": "en",
"country": "",
"description": "English",
"uuid": "37",
"name": "English",
"path": "/locales/en",
"rightToLeft": false,
"completeResponse": true,
"scriptDirection": "ltr"
},
"authorised": false,
"userMessage": ""
}
I developed a CommonResponseMiddleware (Middlware component) in order to implement this requirement.
public class CommonResponseMiddleware
{
private readonly RequestDelegate _next;
private ICommonService _commonService;
public CommonResponseMiddleware(RequestDelegate next, ICommonService commonService)
{
_next = next;
_commonService = commonService;
}
public async Task Invoke(HttpContext context)
{
var currentBody = context.Response.Body;
using (var memoryStream = new MemoryStream())
{
context.Response.Body = memoryStream;
// Hit the web api and get the result
await _next.Invoke(context);
context.Response.Body = currentBody;
memoryStream.Seek(0, SeekOrigin.Begin);
var readToEnd = new StreamReader(memoryStream).ReadToEnd();
var objResult = JsonConvert.DeserializeObject(readToEnd);
}
}
}
In the objResult I get the all the data for Entity: CountryResult but with all the properties of APIResult(locale, authorised,userMessage) still set to null.
How to setup the values of APIResult and return it as part of the complete payload?
Can anyone help me here to fix this issue by providing their guidance?
c# asp.net-core-2.0
I have the following POCO classes :
public class CountryResult : APIResult
{
public CountryResult()
{
Countries = new List<CountryDTO>();
}
public List<CountryDTO> Countries
{
get;
set;
}
}
public class APIResult
{
public Locale Locale
{
get;
set;
}
[JsonProperty("authorised")]
public bool Authorized
{
get;
set;
}
public string UserMessage
{
get;
set;
}
= "";
}
The json response should always to be consistent. The locale, authorised,userMessage are common in every payload response.
{
"countries": ,
"locale": {
"localisationIdentifier": "en",
"enabled": true,
"language": "en",
"country": "",
"description": "English",
"uuid": "37",
"name": "English",
"path": "/locales/en",
"rightToLeft": false,
"completeResponse": true,
"scriptDirection": "ltr"
},
"authorised": false,
"userMessage": ""
}
I developed a CommonResponseMiddleware (Middlware component) in order to implement this requirement.
public class CommonResponseMiddleware
{
private readonly RequestDelegate _next;
private ICommonService _commonService;
public CommonResponseMiddleware(RequestDelegate next, ICommonService commonService)
{
_next = next;
_commonService = commonService;
}
public async Task Invoke(HttpContext context)
{
var currentBody = context.Response.Body;
using (var memoryStream = new MemoryStream())
{
context.Response.Body = memoryStream;
// Hit the web api and get the result
await _next.Invoke(context);
context.Response.Body = currentBody;
memoryStream.Seek(0, SeekOrigin.Begin);
var readToEnd = new StreamReader(memoryStream).ReadToEnd();
var objResult = JsonConvert.DeserializeObject(readToEnd);
}
}
}
In the objResult I get the all the data for Entity: CountryResult but with all the properties of APIResult(locale, authorised,userMessage) still set to null.
How to setup the values of APIResult and return it as part of the complete payload?
Can anyone help me here to fix this issue by providing their guidance?
c# asp.net-core-2.0
c# asp.net-core-2.0
asked Nov 10 at 20:11
santosh kumar patro
1,77282654
1,77282654
Getting stuck through some errors to get it half-working, but was wondering if we could get an example with some code sample on this issue. I have been trying a lot but nothing working. Any help is much appreciated.
– santosh kumar patro
Nov 11 at 15:20
add a comment |
Getting stuck through some errors to get it half-working, but was wondering if we could get an example with some code sample on this issue. I have been trying a lot but nothing working. Any help is much appreciated.
– santosh kumar patro
Nov 11 at 15:20
Getting stuck through some errors to get it half-working, but was wondering if we could get an example with some code sample on this issue. I have been trying a lot but nothing working. Any help is much appreciated.
– santosh kumar patro
Nov 11 at 15:20
Getting stuck through some errors to get it half-working, but was wondering if we could get an example with some code sample on this issue. I have been trying a lot but nothing working. Any help is much appreciated.
– santosh kumar patro
Nov 11 at 15:20
add a comment |
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53242996%2fwrap-the-common-components-in-every-api-response-using-asp-net-core-2-middleware%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Getting stuck through some errors to get it half-working, but was wondering if we could get an example with some code sample on this issue. I have been trying a lot but nothing working. Any help is much appreciated.
– santosh kumar patro
Nov 11 at 15:20