1、总体来说很简单,首先新建一个MVC框架的项目,模板选择WebAPI,这样就搞定80%了。
2、WebApiConfig.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web.Http; namespace UrlToPngWebAPI { public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); config.EnableSystemDiagnosticsTracing(); } } }
3、RouteConfig.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace UrlToPngWebAPI { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } } }
4、请求结构
Web2PNGRequest.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using Newtonsoft.Json; namespace UrlToPngWebAPI.Models { public class Web2PNGRequest { [JsonProperty] public String WebURL { get; set; } [JsonProperty] public String HeaderPath { get; set; } [JsonProperty] public String FooterPath { get; set; } } }
5、返回结构
Web2PNGResponse.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Newtonsoft.Json; namespace UrlToPngWebAPI.Models { public class Web2PNGResponse { [JsonProperty] public int ErrorCode { get; set; } [JsonProperty] public String ErrorInfo { get; set; } [JsonProperty] public String PNGPath { get; set; } } }
6、Controller
Url2PNGController.cs
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Text; using System.Web.Helpers; using System.Web.Http; using Newtonsoft.Json; using UrlToPngCsTest; using UrlToPngWebAPI.Models; using UrlToPngWebAPI.Pulgins; namespace UrlToPngWebAPI.Controllers { public class Url2PNGController : ApiController { // 返回输入参数示例 public HttpResponseMessage Get() { Web2PNGRequest req = new Web2PNGRequest(); req.WebURL = "webURL"; req.HeaderPath = "headerPath"; req.FooterPath = "footerPath"; String jsonString = JsonConvert.SerializeObject(req); HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(jsonString, Encoding.GetEncoding("UTF-8"), "application/json") }; return result; } // GET public HttpResponseMessage Get(String WebURL, String HeaderPath, String FooterPath) { UrlToPng4Web.InitUrlTOPng4CS(); Web2PNGRequest req = new Web2PNGRequest(); req.WebURL = WebURL; req.HeaderPath = HeaderPath; req.FooterPath = FooterPath; Web2PNGResponse rsp = UrlToPng4Web.UrlToPNG(req); String jsonString = JsonConvert.SerializeObject(rsp); HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(jsonString, Encoding.GetEncoding("UTF-8"), "application/json") }; return result; } // POST public HttpResponseMessage Post(Web2PNGRequest req) { UrlToPng4Web.InitUrlTOPng4CS(); Web2PNGResponse rsp = UrlToPng4Web.UrlToPNG(req); String jsonString = JsonConvert.SerializeObject(rsp); HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(jsonString, Encoding.GetEncoding("UTF-8"), "application/json") }; return result; } } }