轻量级休息怎么做可点击的结果?

时间:2017-12-12 10:08:59

标签: rest .net-core asp.net-core-webapi

我是.net核心新手 而且我的情况是我必须将CPU使用率保持在最低限度 所以我对轻量级的网/休息可能性感兴趣 并启动了新的web api项目并调整了默认值ValuesControllers.cs

情况是我有很多日志文件,我已经可以通过uri列出日志了   的本地主机:someport / API /值/
我可以通过输入
来显示简单的txt日志文件内容   的本地主机:someport / API /值/ 5
这将显示fith日志文件内容

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using System.IO;

namespace Restview.Controllers
{
[Route("api/[controller]")]
public class ValuesController : Controller
{
    const string LogFolder = @"C:\Logger\IOCount";
    String[] result =  Directory.GetFiles(LogFolder);

    // GET api/values
    [HttpGet]
    public IEnumerable<string> Get()
    {
        for (int i=0; i<result.Length;i++) result[i]=Path.GetFileName(result[i]);
        return result;
    }

    // GET api/values/5
    [HttpGet("{id}")]
    public string Get(int id)
    {
        string[] lines = System.IO.File.ReadAllLines(result[id]);
        string answer = "Showing : " + result[id] + "\n" + string.Join('\n',lines);
        return answer;
    }
  }
}

我想要的是 localhost:someport / api / values / 的结果可以点击,所以如果你点击某一行就可以看到该日志文件就像一样键入localhost:someport / api / values / clickedindex 。怎么实现呢?

1 个答案:

答案 0 :(得分:0)

您必须将Get()方法更改为以下内容:

// GET api/values
public HttpResponseMessage Get()
{
    var sb = new StringBuilder();

    sb.Append("<html><body>");

    for (int i = 0; i < result.Length; i++)
    {
        sb.Append($"<div><a href='{Url.Link("DefaultApi", new { Action = "", id = i })}'>{Path.GetFileName(result[i])}</div>");
    }

    sb.Append("</body></html>");

    var res = Request.CreateResponse(HttpStatusCode.OK);

    res.Content = new StringContent(sb.ToString(), Encoding.UTF8, "text/html");

    return res;
}

正如您所看到的,如果您想要列表,则必须使用html作为输出内容类型。