私は既存のASP.Net WEB API
の出力レスポンスフォーマットを持っています。 私はそのプロジェクトをASP.NET CORE
に変換しています。ASP.NET COREにレスポンスデータをフォーマットするにはどうすればよいですか?
IActionResult or
に
HttpResponseMessage
からだけでなく戻り値の型を変更する必要がありますが、どのように私は私のカスタムを管理しない
ASP.NET CORE
にプロジェクトを変換しています。この
link
public class MyClass
{
[JsonProperty("id")]
public long Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
}
// Helper.cs
public class ApiResponse
{
[DataMember(EmitDefaultValue = false)]
[JsonProperty(PropertyName = "data")]
public object Data { get; set; }
public ApiResponse(HttpStatusCode statusCode, object result = null)
{
Data = result;
}
}
// Helper.cs
public class WrappingHandler<T> where T : class
{
public static HttpResponseMessage ResponseHandler(IEnumerable<T> responseObject, HttpRequestMessage request)
{
HttpResponseMessage response = request.CreateResponse(HttpStatusCode.OK, responseObject);
var newResponse = request.CreateResponse(HttpStatusCode.OK, new ApiResponse(HttpStatusCode.OK, responseObject));
return newResponse;
}
}
// HomeController.cs
public HttpResponseMessage RetriveData(string name)
{
try
{
var mydata = _context.Get(name);
return WrappingHandler<MyClass>.ResponseHandler(mydata, Request);
}
}
// output for asp.net webapi
{
"data": [
{
"id": 32,
"name": "Hi everyone"
}
]
}
を経てい
出力フォーマットが変わる?
私はWrappingHandler
とApiResponse
anyhelpに変更する必要がありますか?
なぜ「WrappingHandler」が必要ですか?アクションから直接レスポンスを返さないのはなぜですか? – peco
'WrappingHandler'私は結果を' data'にしたいだけでなく、出力に 'metadata'のような余分なフィールドをいくつか追加するような形式をしています。 WrappingHandlerを使用して書式設定を行う理由ですそれはasp.net webapiに完璧に動作しますが、asp.netコアリターンレスポンス – Neo