使用F#bet188地址Web API服务并在Azure上托管它

在此帖子中,我想看看如何使用F#bet188地址Web API项目并在Azure上托管它。这将是博客系列的一部分,用于如何基于F#bet188地址移动应用程序(包括后端)。博客文章假定您读者对如何bet188地址Web API Web服务的基本了解。

F#是基于.NET Framework的功能编程语言,与许多其他功能编程语言相反,也使其成为通用语言。在我努力探索一个功能编程语言,我选择了f#,因为它允许我不仅bet188地址.NET应用程序,还可以bet188地址基于Xamarin的跨平台应用程序。

要部署到Azure,您将需要一个有效的Azure帐户。或者,您可以在本地计算机上运行应用程序。

设置项目

我将使用Visual Studio 2015 RC进行此设置,但您也可以在VS 2013上遵循。bet188地址一个新项目然后去 在线的 项目,选择 Visual F# 然后选择 F#MVC 5 。只有在第一次设置期间必须完成。从现在开始,您将找到项目模板 安装了 项目模板。

newprojectfromonlinetempletemplate

看看解决方案

如果您熟悉Web API解决方案,您将在家中找到自己。

Webapisolution.

在控制器下,您可以找到预期的定义,以及在模型下。这 global.asax.fs. 还有一个熟悉的戒指:

namespace FSharpWebSample

open System
open System.Net.Http
open System.Web
open System.Web.Http
open System.Web.Routing

type HttpRoute = {
    controller : string
    id : RouteParameter }

type Global() =
    inherit System.Web.HttpApplication() 

    static member RegisterWebApi(config: HttpConfiguration) =
        // Configure routing
        config.MapHttpAttributeRoutes()
        config.Routes.MapHttpRoute(
            "DefaultApi", // Route name
            "api/{controller}/{id}", // URL with parameters
            { controller = "{controller}"; id = RouteParameter.Optional } // Parameter defaults
        ) |> ignore

        // Configure serialization
        config.Formatters.XmlFormatter.UseXmlSerializer <- true
        config.Formatters.JsonFormatter.SerializerSettings.ContractResolver <- Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()

        // Additional Web API settings

    member x.Application_Start() =
        GlobalConfiguration.Configure(Action<_> Global.RegisterWebApi)

扩展控制器

当我们查看控制器时,我们看到bet188地址了模型的数组,并且有一个将返回列表的方法。让我们扩展控制器以返回它的ID请求的值。首先,我们必须扩展模型 Car.fs. :

namespace FSharpWebSample.Models

open Newtonsoft.Json

[<CLIMutable>]
type Car = {
    Make : string
    Model : string
    Id : int
}

现在我们可以扩展 carscontroller.fs. 这样我们就可以过滤列表并获得值:

namespace FSharpWebSample.Controllers
open System
open System.Collections.Generic
open System.Linq
open System.Net.Http
open System.Web.Http
open FSharpWebSample.Models

/// Retrieves values.
type CarsController() =
    inherit ApiController()
    
    let values = [ { Make = "Ford"; Model = "Mustang"; Id = 1 }; { Make = "Nissan"; Model = "Titan"; Id = 2 }; { Make = "Audi"; Model = "R8"; Id = 3 } ]
    
    /// Gets all values.
    member x.Get() = values
    
    member x.Get(id:int) = values |> List.filter(fun v -> v.Id = id)

部署到Azure.

幸运地部署到Azure效果很糟糕,就像它一直是C#,右键单击Web API项目,选择 发布...,Microsoft Azure Web Apps 然后bet188地址一个新的Web应用程序输入一个名称,最后点击 p 。现在剩下的就是测试Web服务,所以让我们手动做到这一点。

测试控制器

打开您选择的首选浏览器。新的Edge浏览器进入Azure网站的路径,并执行以下URI:

http://fsharpwebsample.azurewebsites.net/api/cars

我们收到整个列表:

[{"make":"Ford","model":"Mustang","id":1},{"make":"Nissan","model":"Titan","id":2},{"make":"Audi","model":"R8","id":3}]

当我们添加ID参数时:

http://fsharpwebsample.azurewebsites.net/api/cars/3

我们只收到所要求的记录:

[{"make":"Audi","model":"R8","id":3}]

结论

使用F#bet188地址Web API服务并不不同于bet188地址与C#相反 Ryan Riley 丹尼尔莫恩 谁提供F#MVC 5模板。还将其上传到Azure并发送请求是人们希望服务运行的方式。期待在F#兔洞进一步下来。

您可以找到样品 GitHub. .

Updated: