Ich habe eine API-Ressource, wo Sie eine neue Ressource erstellen können. Das sieht aus wie so: -ASP.Net Core Set Content-Type und Location-Header für JSON-Inhalt
[HttpPost("/content")]
public JsonResult PostContent([FromBody] ContentCreate content)
{
JsonResult result;
if (ModelState.IsValid) {
var newContent = _contentService.Create(content);
result = Json(newContent);
result.StatusCode = (int)HttpStatusCode.Created;
result.ContentType = ContentTypes.VENDOR_MIME_TYPE;
}
else {
var error = new ClientError(ModelState){
Code = ErrorCodes.INVALID_CONTENT,
Description = "Content is invalid"
};
result = Json(error);
result.StatusCode = (int)HttpStatusCode.BadRequest;
result.ContentType = ContentTypes.VENDOR_MIME_TYPE_ERROR;
}
return result;
}
Dies funktioniert gut, wie es meine Anforderungen erfüllt einen 201
Status zurückzukehren, und haben einen herstellerspezifischen MIME-Typ für die Content-Type
-Header. Ich möchte jedoch einen Location
Header zurückgeben, der auf den Speicherort der neu erstellten Ressource zeigt. Ich bin nicht klar, wie Sie den Location-Header zur Antwort hinzufügen. Ich habe über CreatedResult
gelesen, die fast perfekt aussieht. Allerdings sehe ich keine Möglichkeit, die Content-Type
einzustellen, wenn ich das benutze.
Also meine Frage ist, wie gebe ich JSON, mit einem 201
Statuscode, mit einem Location
Header und einem benutzerdefinierten Content-Type
?
Danke, aber ich möchte den Kontext nicht direkt ansprechen, da dies es schwierig zu testen macht. – baynezy
Erstellen Sie dann Ihr eigenes benutzerdefiniertes Aktionsergebnis. Könnte sowieso eine gute Idee sein, da es den Controller ein wenig aufräumen könnte. – Allrameest