I need to create a method called publish, to get the name, description, endpoint, no of operands and operand type in JSON format and write it to a text file. I have implemented that part but after the first API call the text in the text file is getting over written which is not what I want. I have included the model class and the controller class below
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Registry.Models
{
public class publishModel
{
public string Name { get; set; }
public string Description { get; set; }
public string endpoint { get; set; }
public int NoOfoperands { get; set; }
public string operandType { get; set; }
}
}
using Newtonsoft.Json;
using Registry.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Web.Http;
namespace Registry.Controllers
{
public class publishController : ApiController
{
[Route("api/publish")]
[HttpPost]
public string publish(publishModel pModel)
{
string servicePath = @"C:\Users\ASUS\source\repos\DC assignment 1\Services.txt";
MemoryStream ms = new MemoryStream();
var write = new Utf8JsonWriter(ms);
write.WriteStartObject();
write.WriteString("Name", pModel.Name);
write.WriteString("Description", pModel.Description);
write.WriteString("Endpoint", pModel.endpoint);
write.WriteString("No of operands", pModel.NoOfoperands.ToString());
write.WriteString("Operand type", pModel.operandType);
write.WriteEndObject();
write.Flush();
string json = Encoding.UTF8.GetString(ms.ToArray());
//string json = JsonConvert.SerializeObject(pModel);
try
{
using (StreamWriter writer = new StreamWriter(servicePath))
{
writer.Write(json);
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
return "Description saved";
}
}
}